[PATCH 3/6] dt-bindings: iommu: Add Broadcom BCM2712 IOMMU

From: Daniel Drake

Date: Sun Jul 12 2026 - 17:19:34 EST


Add bindings for the Broadcom BCM2712 IOMMU and its shared TLB cache.

Include compatibility with the cache phandle used in existing firmware
shipped on Raspberry Pi 5, and also allow the iova-window to be omitted,
which similarly will maintain compatibility with existing RPi5 firmware.

Signed-off-by: Daniel Drake <dan@xxxxxxxxxxxxxxx>
---
.../bindings/iommu/brcm,bcm2712-iommu.yaml | 65 ++++++++++++++++++++++
.../bindings/iommu/brcm,bcm2712-iommuc.yaml | 35 ++++++++++++
2 files changed, 100 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..0d91c513afc4
--- /dev/null
+++ b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommu.yaml
@@ -0,0 +1,65 @@
+# 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 IOMMU provides address translation for various hardware blocks
+ on the BCM2712 SoC, such as the VC6 display pipeline.
+
+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).
+
+ cache:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Deprecated. Use brcm,iommu-cache instead.
+ deprecated: true
+
+ brcm,iova-window:
+ $ref: /schemas/types.yaml#/definitions/uint64-array
+ description: |
+ An array of two 64-bit integers specifying the IOVA aperture start
+ address and the aperture size. IOMMU mappings will be created inside
+ this aperture. All preceding address space is in identity/bypass mode.
+ The aperture start address must be 4GB-aligned.
+ Should be considered a required property, but it is technically optional
+ in order to maintain compatibility with historical firmware versions.
+ If absent, defaults to a 4GB window at 40GiB (0xa00000000).
+ items:
+ - description: IOVA window start address
+ - description: IOVA window size
+
+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>;
+ brcm,iova-window = /bits/ 64 <0xa00000000 0x100000000>;
+ };
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..f22e9be2c473
--- /dev/null
+++ b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommuc.yaml
@@ -0,0 +1,35 @@
+# 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 IOMMU Cache (IOMMUC) provides a shared Translation Lookaside
+ Buffer (TLB) cache used by the primary BCM2712 IOMMUs to speed up address
+ translations.
+
+properties:
+ compatible:
+ const: brcm,bcm2712-iommuc
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ iommuc: iommu-cache@1001000 {
+ compatible = "brcm,bcm2712-iommuc";
+ reg = <0x1001000 0x100>;
+ };

--
2.55.0