XSCOM Bindings ============== 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" * ecid = * wafer-id = * wafer-location = ECID ---- Electronic Chip ID (ECID) is a process by which the wafer number, chip location (i.e. X,Y) and other optional data items are electrically encoded directly on the chip. wafer-id property represents wafer number and wafer-location property represents chip location (both X and Y location). 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