[PATCH v3 2/5] dt-bindings: iommu: Add Broadcom BCM2712 IOMMU

From: Daniel Drake

Date: Tue Aug 25 2026 - 17:33:37 EST


Add bindings for the Broadcom BCM2712 IOMMUs and their shared TLB cache.

Signed-off-by: Daniel Drake <dan@xxxxxxxxxxxxxxx>
---
.../bindings/iommu/brcm,bcm2712-iommu.yaml | 52 ++++++++++++++++++++++
.../bindings/iommu/brcm,bcm2712-iommuc.yaml | 38 ++++++++++++++++
2 files changed, 90 insertions(+)

diff --git a/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommu.yaml b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommu.yaml
new file mode 100644
index 000000000000..50274f03e50c
--- /dev/null
+++ b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommu.yaml
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iommu/brcm,bcm2712-iommu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM2712 IOMMU
+
+maintainers:
+ - Daniel Drake <dan@xxxxxxxxxxxxxxx>
+
+description:
+ The BCM2712 SoC features multiple independent IOMMU instances providing
+ address translation for multimedia hardware blocks, such as the VC6 display
+ pipeline, camera receivers, and ISP. Each IOMMU has its own page tables,
+ control registers, and local TLB, and is additionally linked to a centralized
+ L2 TLB (IOMMUC).
+
+properties:
+ compatible:
+ const: brcm,bcm2712-iommu
+
+ reg:
+ maxItems: 1
+
+ '#iommu-cells':
+ const: 0
+
+ brcm,iommu-cache:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Phandle to the shared IOMMU cache (IOMMUC). Each IOMMU instance caches
+ translated descriptors in this centralized L2 TLB cache block and must
+ trigger cache invalidation commands on it when updating or unmapping page
+ table entries.
+
+required:
+ - compatible
+ - reg
+ - '#iommu-cells'
+ - brcm,iommu-cache
+
+additionalProperties: false
+
+examples:
+ - |
+ iommu@5200 {
+ compatible = "brcm,bcm2712-iommu";
+ reg = <0x5200 0x80>;
+ brcm,iommu-cache = <&iommuc>;
+ #iommu-cells = <0>;
+ };
diff --git a/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommuc.yaml b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommuc.yaml
new file mode 100644
index 000000000000..1d892d1dd809
--- /dev/null
+++ b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommuc.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iommu/brcm,bcm2712-iommuc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM2712 Shared IOMMU Cache (IOMMUC)
+
+maintainers:
+ - Daniel Drake <dan@xxxxxxxxxxxxxxx>
+
+description:
+ The BCM2712 IOMMUC is a centralized Translation Lookaside Buffer (TLB) cache
+ which accelerates address translation across the SoC's IOMMU devices. If an
+ address mapping is not found in the IOMMU's local TLB cache, then this
+ IOMMUC is consulted as a L2 TLB. The SoC includes a single IOMMUC which is
+ shared between all IOMMUs, and it must be explicitly invalidated when
+ modifying or unmapping IOMMU page tables.
+
+properties:
+ compatible:
+ const: brcm,bcm2712-iommuc
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ iommuc@5b00 {
+ compatible = "brcm,bcm2712-iommuc";
+ reg = <0x5b00 0x80>;
+ };

--
2.55.0