.. _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 */ }