18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/iommu/renesas,ipmmu-vmsa.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Renesas VMSA-Compatible IOMMU
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription:
138c2ecf20Sopenharmony_ci  The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables.
148c2ecf20Sopenharmony_ci  It provides address translation for bus masters outside of the CPU, each
158c2ecf20Sopenharmony_ci  connected to the IPMMU through a port called micro-TLB.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciproperties:
188c2ecf20Sopenharmony_ci  compatible:
198c2ecf20Sopenharmony_ci    oneOf:
208c2ecf20Sopenharmony_ci      - items:
218c2ecf20Sopenharmony_ci          - enum:
228c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a73a4  # R-Mobile APE6
238c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7742  # RZ/G1H
248c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7743  # RZ/G1M
258c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7744  # RZ/G1N
268c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7745  # RZ/G1E
278c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7790  # R-Car H2
288c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7791  # R-Car M2-W
298c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7793  # R-Car M2-N
308c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7794  # R-Car E2
318c2ecf20Sopenharmony_ci          - const: renesas,ipmmu-vmsa  # R-Mobile APE6 or R-Car Gen2 or RZ/G1
328c2ecf20Sopenharmony_ci      - items:
338c2ecf20Sopenharmony_ci          - enum:
348c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a774a1 # RZ/G2M
358c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a774b1 # RZ/G2N
368c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a774c0 # RZ/G2E
378c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a774e1 # RZ/G2H
388c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7795  # R-Car H3
398c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a7796  # R-Car M3-W
408c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a77961 # R-Car M3-W+
418c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a77965 # R-Car M3-N
428c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a77970 # R-Car V3M
438c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a77980 # R-Car V3H
448c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a77990 # R-Car E3
458c2ecf20Sopenharmony_ci              - renesas,ipmmu-r8a77995 # R-Car D3
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  reg:
488c2ecf20Sopenharmony_ci    maxItems: 1
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci  interrupts:
518c2ecf20Sopenharmony_ci    minItems: 1
528c2ecf20Sopenharmony_ci    maxItems: 2
538c2ecf20Sopenharmony_ci    description:
548c2ecf20Sopenharmony_ci      Specifiers for the MMU fault interrupts. Not required for cache IPMMUs.
558c2ecf20Sopenharmony_ci    items:
568c2ecf20Sopenharmony_ci      - description: non-secure mode
578c2ecf20Sopenharmony_ci      - description: secure mode if supported
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  '#iommu-cells':
608c2ecf20Sopenharmony_ci    const: 1
618c2ecf20Sopenharmony_ci    description:
628c2ecf20Sopenharmony_ci      The number of the micro-TLB that the device is connected to.
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci  power-domains:
658c2ecf20Sopenharmony_ci    maxItems: 1
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci  renesas,ipmmu-main:
688c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
698c2ecf20Sopenharmony_ci    description:
708c2ecf20Sopenharmony_ci      Reference to the main IPMMU phandle plus 1 cell. The cell is
718c2ecf20Sopenharmony_ci      the interrupt bit number associated with the particular cache IPMMU
728c2ecf20Sopenharmony_ci      device. The interrupt bit number needs to match the main IPMMU IMSSTR
738c2ecf20Sopenharmony_ci      register. Only used by cache IPMMU instances.
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_cirequired:
768c2ecf20Sopenharmony_ci  - compatible
778c2ecf20Sopenharmony_ci  - reg
788c2ecf20Sopenharmony_ci  - '#iommu-cells'
798c2ecf20Sopenharmony_ci  - power-domains
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_cioneOf:
828c2ecf20Sopenharmony_ci  - required:
838c2ecf20Sopenharmony_ci      - interrupts
848c2ecf20Sopenharmony_ci  - required:
858c2ecf20Sopenharmony_ci      - renesas,ipmmu-main
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ciadditionalProperties: false
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ciexamples:
908c2ecf20Sopenharmony_ci  - |
918c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
928c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
938c2ecf20Sopenharmony_ci    #include <dt-bindings/power/r8a7791-sysc.h>
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci    ipmmu_mx: iommu@fe951000 {
968c2ecf20Sopenharmony_ci        compatible = "renasas,ipmmu-r8a7791", "renasas,ipmmu-vmsa";
978c2ecf20Sopenharmony_ci        reg = <0xfe951000 0x1000>;
988c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
998c2ecf20Sopenharmony_ci                     <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
1008c2ecf20Sopenharmony_ci        #iommu-cells = <1>;
1018c2ecf20Sopenharmony_ci    };
102