xref: /openbmc/linux/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1dba496f3SYoshihiro Shimoda# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2dba496f3SYoshihiro Shimoda%YAML 1.2
3dba496f3SYoshihiro Shimoda---
4dba496f3SYoshihiro Shimoda$id: http://devicetree.org/schemas/iommu/renesas,ipmmu-vmsa.yaml#
5dba496f3SYoshihiro Shimoda$schema: http://devicetree.org/meta-schemas/core.yaml#
6dba496f3SYoshihiro Shimoda
7dba496f3SYoshihiro Shimodatitle: Renesas VMSA-Compatible IOMMU
8dba496f3SYoshihiro Shimoda
9dba496f3SYoshihiro Shimodamaintainers:
10dba496f3SYoshihiro Shimoda  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
11dba496f3SYoshihiro Shimoda
12dba496f3SYoshihiro Shimodadescription:
13dba496f3SYoshihiro Shimoda  The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables.
14dba496f3SYoshihiro Shimoda  It provides address translation for bus masters outside of the CPU, each
15dba496f3SYoshihiro Shimoda  connected to the IPMMU through a port called micro-TLB.
16dba496f3SYoshihiro Shimoda
17dba496f3SYoshihiro Shimodaproperties:
18dba496f3SYoshihiro Shimoda  compatible:
19dba496f3SYoshihiro Shimoda    oneOf:
20dba496f3SYoshihiro Shimoda      - items:
21dba496f3SYoshihiro Shimoda          - enum:
22dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a73a4  # R-Mobile APE6
23d88f7e02SLad Prabhakar              - renesas,ipmmu-r8a7742  # RZ/G1H
24dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7743  # RZ/G1M
25dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7744  # RZ/G1N
26dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7745  # RZ/G1E
27dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7790  # R-Car H2
28dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7791  # R-Car M2-W
29dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7793  # R-Car M2-N
30dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7794  # R-Car E2
31dba496f3SYoshihiro Shimoda          - const: renesas,ipmmu-vmsa  # R-Mobile APE6 or R-Car Gen2 or RZ/G1
3233ce453cSGeert Uytterhoeven
33dba496f3SYoshihiro Shimoda      - items:
34dba496f3SYoshihiro Shimoda          - enum:
35dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a774a1 # RZ/G2M
36dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a774b1 # RZ/G2N
37dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a774c0 # RZ/G2E
38a6271ec8SLad Prabhakar              - renesas,ipmmu-r8a774e1 # RZ/G2H
39dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7795  # R-Car H3
40dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a7796  # R-Car M3-W
41215c224fSYoshihiro Shimoda              - renesas,ipmmu-r8a77961 # R-Car M3-W+
42dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a77965 # R-Car M3-N
43dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a77970 # R-Car V3M
44dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a77980 # R-Car V3H
45dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a77990 # R-Car E3
46dba496f3SYoshihiro Shimoda              - renesas,ipmmu-r8a77995 # R-Car D3
4733ce453cSGeert Uytterhoeven
48da9f8386SYoshihiro Shimoda      - items:
49da9f8386SYoshihiro Shimoda          - enum:
5033ce453cSGeert Uytterhoeven              - renesas,ipmmu-r8a779a0           # R-Car V3U
51da9f8386SYoshihiro Shimoda              - renesas,ipmmu-r8a779f0           # R-Car S4-8
521505e721SYoshihiro Shimoda              - renesas,ipmmu-r8a779g0           # R-Car V4H
53da9f8386SYoshihiro Shimoda          - const: renesas,rcar-gen4-ipmmu-vmsa  # R-Car Gen4
54dba496f3SYoshihiro Shimoda
55dba496f3SYoshihiro Shimoda  reg:
56dba496f3SYoshihiro Shimoda    maxItems: 1
57dba496f3SYoshihiro Shimoda
58dba496f3SYoshihiro Shimoda  interrupts:
59dba496f3SYoshihiro Shimoda    minItems: 1
60dba496f3SYoshihiro Shimoda    description:
61dba496f3SYoshihiro Shimoda      Specifiers for the MMU fault interrupts. Not required for cache IPMMUs.
62dba496f3SYoshihiro Shimoda    items:
63dba496f3SYoshihiro Shimoda      - description: non-secure mode
64dba496f3SYoshihiro Shimoda      - description: secure mode if supported
65dba496f3SYoshihiro Shimoda
66dba496f3SYoshihiro Shimoda  '#iommu-cells':
67dba496f3SYoshihiro Shimoda    const: 1
68dba496f3SYoshihiro Shimoda    description:
69dba496f3SYoshihiro Shimoda      The number of the micro-TLB that the device is connected to.
70dba496f3SYoshihiro Shimoda
71dba496f3SYoshihiro Shimoda  power-domains:
72dba496f3SYoshihiro Shimoda    maxItems: 1
73dba496f3SYoshihiro Shimoda
74dba496f3SYoshihiro Shimoda  renesas,ipmmu-main:
75dba496f3SYoshihiro Shimoda    $ref: /schemas/types.yaml#/definitions/phandle-array
7639bd2b6aSRob Herring    items:
77*b67ab6fbSYoshihiro Shimoda      - minItems: 1
78*b67ab6fbSYoshihiro Shimoda        items:
7939bd2b6aSRob Herring          - description: phandle to main IPMMU
80*b67ab6fbSYoshihiro Shimoda          - description:
81*b67ab6fbSYoshihiro Shimoda              The interrupt bit number associated with the particular cache
82*b67ab6fbSYoshihiro Shimoda              IPMMU device. If present, the interrupt bit number needs to match
83*b67ab6fbSYoshihiro Shimoda              the main IPMMU IMSSTR register. Only used by cache IPMMU
84*b67ab6fbSYoshihiro Shimoda              instances.
85dba496f3SYoshihiro Shimoda    description:
86*b67ab6fbSYoshihiro Shimoda      Reference to the main IPMMU.
87dba496f3SYoshihiro Shimoda
88dba496f3SYoshihiro Shimodarequired:
89dba496f3SYoshihiro Shimoda  - compatible
90dba496f3SYoshihiro Shimoda  - reg
91dba496f3SYoshihiro Shimoda  - '#iommu-cells'
92dba496f3SYoshihiro Shimoda
93dba496f3SYoshihiro ShimodaoneOf:
94dba496f3SYoshihiro Shimoda  - required:
95dba496f3SYoshihiro Shimoda      - interrupts
96dba496f3SYoshihiro Shimoda  - required:
97dba496f3SYoshihiro Shimoda      - renesas,ipmmu-main
98dba496f3SYoshihiro Shimoda
99dba496f3SYoshihiro ShimodaadditionalProperties: false
100dba496f3SYoshihiro Shimoda
10149ec0686SRob HerringallOf:
10249ec0686SRob Herring  - if:
10349ec0686SRob Herring      properties:
10449ec0686SRob Herring        compatible:
10549ec0686SRob Herring          not:
10649ec0686SRob Herring            contains:
10749ec0686SRob Herring              const: renesas,ipmmu-vmsa
10849ec0686SRob Herring    then:
10949ec0686SRob Herring      required:
11049ec0686SRob Herring        - power-domains
11149ec0686SRob Herring
112*b67ab6fbSYoshihiro Shimoda  - if:
113*b67ab6fbSYoshihiro Shimoda      properties:
114*b67ab6fbSYoshihiro Shimoda        compatible:
115*b67ab6fbSYoshihiro Shimoda          contains:
116*b67ab6fbSYoshihiro Shimoda            const: renesas,rcar-gen4-ipmmu-vmsa
117*b67ab6fbSYoshihiro Shimoda    then:
118*b67ab6fbSYoshihiro Shimoda      properties:
119*b67ab6fbSYoshihiro Shimoda        renesas,ipmmu-main:
120*b67ab6fbSYoshihiro Shimoda          items:
121*b67ab6fbSYoshihiro Shimoda            - maxItems: 1
122*b67ab6fbSYoshihiro Shimoda    else:
123*b67ab6fbSYoshihiro Shimoda      properties:
124*b67ab6fbSYoshihiro Shimoda        renesas,ipmmu-main:
125*b67ab6fbSYoshihiro Shimoda          items:
126*b67ab6fbSYoshihiro Shimoda            - minItems: 2
127*b67ab6fbSYoshihiro Shimoda
128dba496f3SYoshihiro Shimodaexamples:
129dba496f3SYoshihiro Shimoda  - |
130dba496f3SYoshihiro Shimoda    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
131dba496f3SYoshihiro Shimoda    #include <dt-bindings/interrupt-controller/arm-gic.h>
132dba496f3SYoshihiro Shimoda    #include <dt-bindings/power/r8a7791-sysc.h>
133dba496f3SYoshihiro Shimoda
134dba496f3SYoshihiro Shimoda    ipmmu_mx: iommu@fe951000 {
13591f93c38SRob Herring        compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa";
136dba496f3SYoshihiro Shimoda        reg = <0xfe951000 0x1000>;
137dba496f3SYoshihiro Shimoda        interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
138dba496f3SYoshihiro Shimoda                     <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
139dba496f3SYoshihiro Shimoda        #iommu-cells = <1>;
140dba496f3SYoshihiro Shimoda    };
141