blob: 497654aca4f3309e0e26cd149b895da980c4ccb6 [file] [log] [blame]
.. _device-tree/opencapi:
=============================
OpenCAPI Device Tree Bindings
=============================
NPU bindings
------------
The NPU nodes are similar to those in :doc:`nvlink`.
We distinguish between OpenCAPI and NVLink links using the
`ibm.npu-link-type` property. NPUs with a mixture of OpenCAPI and
NVLink links are currently unsupported.
.. code-block:: dts
xscom@603fc00000000 {
npu@5011000 {
compatible = "ibm,power9-npu";
phandle = <0xe6>;
reg = <0x5011000 0x2c>;
ibm,npu-index = <0x0>;
ibm,npu-links = <0x2>; /* Number of links wired up to this npu. */
link@2 {
compatible = "ibm,npu-link";
ibm,npu-link-type = "opencapi";
ibm,npu-group-id = <0x1>;
ibm,npu-lane-mask = <0xf1e000>; /* Mask specifying which IBM PHY lanes
* are used for this link. 24-bit,
* lane 0 is most significant bit */
ibm,npu-phy = <0x80000000 0x9010c3f>; /* SCOM address of the IBM PHY
* controlling this link. */
ibm,npu-link-index = <0x2>; /* Hardware link index.
* Used to calculate various address offsets. */
phandle = <0xe7>;
};
link@3 {
compatible = "ibm,npu-link";
ibm,npu-link-type = "opencapi";
ibm,npu-group-id = <0x2>;
ibm,npu-lane-mask = <0x78f>;
ibm,npu-phy = <0x80000000 0x9010c3f>;
ibm,npu-link-index = <0x3>;
phandle = <0xe8>;
};
};
};
PCI device bindings
-------------------
The PCI devices mostly look like regular PCI devices (see :doc:`pci`),
but have a few additional fields to allow the devices to be associated
with the relevant NPU. These fields are presently not consumed by
anything but may be used in future.
.. code-block:: dts
pciex@600e800000000 {
/* OpenCAPI specific properties */
compatible = "ibm,power9-npu-opencapi-pciex", "ibm,ioda2-npu2-opencapi-phb";
ibm,npcq = <0xe6>; /* phandle to the NPU node */
ibm,npu-index = <0x0>;
ibm,links = <0x1>;
/* Generic PCI fields here */
}