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

Jim Quinlan james.quinlan at broadcom.com
Thu Sep 3 10:36:37 PDT 2026


On Wed, Sep 2, 2026 at 1:58 PM Daniel Drake <dan at reactivated.net> wrote:
>
> Add bindings for the Broadcom BCM2712 IOMMUs and their shared TLB cache.
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski at oss.qualcomm.com>
> Signed-off-by: Daniel Drake <dan at reactivated.net>
> ---
>  .../bindings/iommu/brcm,bcm2712-iommu.yaml         | 54 ++++++++++++++++++++++
>  .../bindings/iommu/brcm,bcm2712-iommuc.yaml        | 40 ++++++++++++++++
>  2 files changed, 94 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..5ca8ce469ec3
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommu.yaml
> @@ -0,0 +1,54 @@
> +# 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 at reactivated.net>
> +  - Florian Fainelli <florian.fainelli at broadcom.com>
> +  - Jim Quinlan <james.quinlan at broadcom.com>
> +
> +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

Hello Daniel,
What are your thoughts on allowing the iommu work without the cache
property, ie having its presence be optional?  I work on the Broadcom
version of the Rpi4/5 SoCs,  and  (a) on certain workloads the cache
slightly degrades performance or (b) on some chips there is no cache
associated with a specific iommu.  This is probably on me to implement
these possibilities, but I just wanted to give you a heads-up.

LGTM

Regards,
Jim Quinlan
Broadcom WCC/CM/STB


> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    iommu at 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..47c584ad667a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iommu/brcm,bcm2712-iommuc.yaml
> @@ -0,0 +1,40 @@
> +# 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 at reactivated.net>
> +  - Florian Fainelli <florian.fainelli at broadcom.com>
> +  - Jim Quinlan <james.quinlan at broadcom.com>
> +
> +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 at 5b00 {
> +        compatible = "brcm,bcm2712-iommuc";
> +        reg = <0x5b00 0x80>;
> +    };
>
> --
> 2.55.0
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5471 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20260903/5a6d496d/attachment-0001.p7s>


More information about the linux-arm-kernel mailing list