| 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@<chip-base-address-0>/ |
| /xscom@<chip-base-address-1>/ |
| … |
| /xscom@<chip-base-address-n>/ |
| |
| * where <chip-base-address-n> 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 = <base-address[#parent-address-cells] size[#parent-size-cells]> |
| * ibm,chip-id = gcid |
| * compatible = "ibm,xscom", "ibm,power8-scom" / "ibm,power7-xscom" |
| * ecid = <Electronic Chip ID, applicable for POWER9 onwards> |
| * wafer-id = <wafer ID, applicable for POWER9 onwards> |
| * wafer-location = <wafer location, applicable for POWER9 onwards> |
| |
| 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@<chip-base-address>/ |
| /xscom@<chip-base-address>/chiptod@<endpoint-addr> |
| /xscom@<chip-base-address>/lpc@<endpoint-addr> |
| |
| * where the <endpoint-addr> 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 = <endpoint-address[#parent-address-cells] size[#parent-size-cells]> |
| * 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 = <xscom-base-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 |