aboutsummaryrefslogtreecommitdiff
path: root/doc/xscom-node-bindings.rst
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2016-07-27 17:43:04 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-08-02 17:31:12 +1000
commitcce80be2fc7d9114ea0000349cc52f0947ea00f1 (patch)
tree14670835d17bd6967b2d09c9973fb0e2dd88feca /doc/xscom-node-bindings.rst
parent68bf986c37252eed2e8fa3db07de02bbd47ff97a (diff)
downloadskiboot-cce80be2fc7d9114ea0000349cc52f0947ea00f1.zip
skiboot-cce80be2fc7d9114ea0000349cc52f0947ea00f1.tar.gz
skiboot-cce80be2fc7d9114ea0000349cc52f0947ea00f1.tar.bz2
doc/*.txt: rename .txt to .rst
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'doc/xscom-node-bindings.rst')
-rw-r--r--doc/xscom-node-bindings.rst57
1 files changed, 57 insertions, 0 deletions
diff --git a/doc/xscom-node-bindings.rst b/doc/xscom-node-bindings.rst
new file mode 100644
index 0000000..0c2545e
--- /dev/null
+++ b/doc/xscom-node-bindings.rst
@@ -0,0 +1,57 @@
+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"
+
+
+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