Re: [PATCH v7 04/10] dt-bindings: iommu: rockchip: allow the RK3576 NPU MMU clock set
From: Diederik de Haas <hidden>
Date: 2026-08-12 10:45:32
Also in:
dri-devel, linux-arm-kernel, linux-iommu, linux-pm, linux-rockchip, lkml
Hi Jiaxing, On Wed Aug 12, 2026 at 11:40 AM CEST, Jiaxing Hu wrote:
quoted hunk ↗ jump to hunk
The RK3576 NPU MMUs need more than aclk and iface. With only those two enabled the MMU accepts reads but silently drops register writes: a DTE_ADDR value written from the power domain, while the domain clocks are still on, reads back correctly, and the write rk_iommu_resume() does microseconds later does not land at all. The vendor DT names the CBUF clocks as that MMU's interface clocks and its driver keeps every NPU clock on for as long as the device is powered. The driver side of this is already upstream, commit 841363ebb508 ("iommu/rockchip: Take all DT clocks"), which switched rk_iommu to devm_clk_bulk_get_all(). Widen the schema to match so those nodes can be described. minItems stays at 2, so every existing devicetree, which all carry exactly aclk and iface, is unaffected. Signed-off-by: Jiaxing Hu <redacted> --- .../devicetree/bindings/iommu/rockchip,iommu.yaml | 8 ++++++++ 1 file changed, 8 insertions(+)diff --git a/Documentation/devicetree/bindings/iommu/rockchip,iommu.yaml b/Documentation/devicetree/bindings/iommu/rockchip,iommu.yaml index 6ce41d11f..a3cedcaaa 100644 --- a/Documentation/devicetree/bindings/iommu/rockchip,iommu.yaml +++ b/Documentation/devicetree/bindings/iommu/rockchip,iommu.yaml@@ -42,14 +42,22 @@ properties: minItems: 1 clocks: + minItems: 2 items: - description: Core clock - description: Interface clock + - description: Compute clock, RK3576 NPU MMUs only + - description: Convolution buffer core clock, RK3576 NPU MMUs only + - description: Convolution buffer interface clock, RK3576 NPU MMUs only
Drop the ", RK3576 NPU MMUs only" part as it is not future proof, not needed, not enforceable and not enforced. IIUC, only a RK3576 NPU MMU can and should have 5 clocks, but a non-NPU RK3576 MMU should only have 2 clocks, just like any MMU for RK3568 and RK3588. So you'd need a new compatible for RK3576 NPU MMU and enforce that only that one has exactly 5 clocks, while all other compatibles are only allowed to have 2 clocks. Right now, it is allowed that a ``rockchip,rk3568-iommu`` compatible has 5 clocks while a RK3576 NPU MMU only has 2. Both are incorrect. Cheers, Diederik
clock-names:
+ minItems: 2
items:
- const: aclk
- const: iface
+ - const: npu
+ - const: aclk_cbuf
+ - const: hclk_cbuf
"#iommu-cells":
const: 0