XSCOM regions ============= The top-level xscom nodes specify the mapping range from the 64-bit address space into the PCB address space. There's one mapping range per chip xscom, therefore one node per mapping range. / /xscom@/ /xscom@/ … /xscom@/ - where is the xscom base address with the gcid-specific bits (for chip n) OR-ed in. Each xscom node has the following properties: * #address-cells = 1 * #size-cells = 1 * reg = * ibm,chip-id = gcid * compatible = "ibm,xscom", "ibm,power8-scom" / "ibm,power7-xscom" Chiplet endpoints ================= One sub-node per endpoint. Endpoints are defined by their (port, endpoint-address) data on the PCB, and are named according to their endpoint types: /xscom@/ /xscom@/chiptod@ /xscom@/lpc@ - where the is a single address (as distinct from the current (gcid,base) format), consisting of the SCOM port and SCOM endpoint bits in their 31-bit address format. Each endpoint node has the following properties: * reg = * compatible - depends on endpoint type, eg "ibm,power8-chiptod" The endpoint address specifies the address on the PCB. So, to calculate the MMIO address for a PCB register: mmio_addr = | (pcb_addr[1:27] << 4) | (pcb_addr[28:31] << 3) Where: - xscom-base-addr is the address from the first two cells of the parent node's reg property - pcb_addr is the first cell of the endpoint's reg property