OpenCAPI Device Tree Bindings¶
NPU bindings¶
The NPU nodes are similar to those in Nvlink Device Tree Bindings.
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.
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 PCI Device Tree Bindings), 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.
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 */
}