74 lines
2.2 KiB
ReStructuredText
74 lines
2.2 KiB
ReStructuredText
![]() |
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
|