]> www.infradead.org Git - users/hch/misc.git/commit
arm64: dts: rockchip: enable the mmu600_pcie IOMMU on the rk3588 SoC
authorNiklas Cassel <cassel@kernel.org>
Thu, 7 Nov 2024 12:37:33 +0000 (13:37 +0100)
committerHeiko Stuebner <heiko@sntech.de>
Mon, 2 Dec 2024 23:23:40 +0000 (00:23 +0100)
commitda92d3dfc871e821a1bface3ba5afcf8cda19805
tree5c673a59c0c8815951a7c0b4ffd73912f9820fd4
parent40384c840ea1944d7c5a392e8975ed088ecf0b37
arm64: dts: rockchip: enable the mmu600_pcie IOMMU on the rk3588 SoC

Commit cd81d3a0695c ("arm64: dts: rockchip: add rk3588 pcie and php
IOMMUs") added the rk3588 SoC's pcie IOMMU and php IOMMU as disabled.

The mmu600_pcie is connected with the five PCIe controllers.
See 8.2 Block Diagram, in rk3588 TRM (Technical Reference Manual).

The five PCIe controllers are:
pcie3x4, pcie3x2, pcie2x1l0, pcie2x1l1, pcie2x1l2.

pcie3x4 can run in either Root Complex mode or Endpoint mode, the other
four PCIe controllers can only run in Root Complex mode. To describe this
we thus have six different device nodes in the device tree.

A PCIe controller in Root Complex mode needs to specify an iommu-map, such
that the device knows how to convert a Requester ID (PCI BDF) to an IOMMU
master ID (stream ID). (A PCIe controller in Endpoint mode should use the
iommus property, just like a regular device.)

If you look at the device tree bindings for msi-map and iommu-map, you can
see that the conversion from Requester ID to MSI-specifier data is the same
as the conversion from Requester ID to IOMMU specifier data. Thus it is
sensible to define the iommu-map property value similar to the msi-map,
such that the conversion will be identical.

Add the proper iommu device tree properties for these six device nodes
connected to the mmu600_pcie, so that we can enable the mmu600_pcie IOMMU.
(The mmu600_php IOMMU is not touched, so it is still disabled.)

Signed-off-by: Niklas Cassel <cassel@kernel.org>
Link: https://lore.kernel.org/r/20241107123732.1160063-2-cassel@kernel.org
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi