xref: /linux/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml (revision c771600c6af14749609b49565ffb4cac2959710d)
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
53209516caSThanh Le              - renesas,ipmmu-r8a779h0           # R-Car V4M
54da9f8386SYoshihiro Shimoda          - const: renesas,rcar-gen4-ipmmu-vmsa  # R-Car Gen4
55dba496f3SYoshihiro Shimoda
56dba496f3SYoshihiro Shimoda  reg:
57dba496f3SYoshihiro Shimoda    maxItems: 1
58dba496f3SYoshihiro Shimoda
59dba496f3SYoshihiro Shimoda  interrupts:
60dba496f3SYoshihiro Shimoda    minItems: 1
61dba496f3SYoshihiro Shimoda    description:
62dba496f3SYoshihiro Shimoda      Specifiers for the MMU fault interrupts. Not required for cache IPMMUs.
63dba496f3SYoshihiro Shimoda    items:
64dba496f3SYoshihiro Shimoda      - description: non-secure mode
65dba496f3SYoshihiro Shimoda      - description: secure mode if supported
66dba496f3SYoshihiro Shimoda
67dba496f3SYoshihiro Shimoda  '#iommu-cells':
68dba496f3SYoshihiro Shimoda    const: 1
69dba496f3SYoshihiro Shimoda    description:
70dba496f3SYoshihiro Shimoda      The number of the micro-TLB that the device is connected to.
71dba496f3SYoshihiro Shimoda
72dba496f3SYoshihiro Shimoda  power-domains:
73dba496f3SYoshihiro Shimoda    maxItems: 1
74dba496f3SYoshihiro Shimoda
75dba496f3SYoshihiro Shimoda  renesas,ipmmu-main:
76dba496f3SYoshihiro Shimoda    $ref: /schemas/types.yaml#/definitions/phandle-array
7739bd2b6aSRob Herring    items:
78b67ab6fbSYoshihiro Shimoda      - minItems: 1
79b67ab6fbSYoshihiro Shimoda        items:
8039bd2b6aSRob Herring          - description: phandle to main IPMMU
81b67ab6fbSYoshihiro Shimoda          - description:
82b67ab6fbSYoshihiro Shimoda              The interrupt bit number associated with the particular cache
83b67ab6fbSYoshihiro Shimoda              IPMMU device. If present, the interrupt bit number needs to match
84b67ab6fbSYoshihiro Shimoda              the main IPMMU IMSSTR register. Only used by cache IPMMU
85b67ab6fbSYoshihiro Shimoda              instances.
86dba496f3SYoshihiro Shimoda    description:
87b67ab6fbSYoshihiro Shimoda      Reference to the main IPMMU.
88dba496f3SYoshihiro Shimoda
89dba496f3SYoshihiro Shimodarequired:
90dba496f3SYoshihiro Shimoda  - compatible
91dba496f3SYoshihiro Shimoda  - reg
92dba496f3SYoshihiro Shimoda  - '#iommu-cells'
93dba496f3SYoshihiro Shimoda
94dba496f3SYoshihiro ShimodaoneOf:
95dba496f3SYoshihiro Shimoda  - required:
96dba496f3SYoshihiro Shimoda      - interrupts
97dba496f3SYoshihiro Shimoda  - required:
98dba496f3SYoshihiro Shimoda      - renesas,ipmmu-main
99dba496f3SYoshihiro Shimoda
100dba496f3SYoshihiro ShimodaadditionalProperties: false
101dba496f3SYoshihiro Shimoda
10249ec0686SRob HerringallOf:
10349ec0686SRob Herring  - if:
10449ec0686SRob Herring      properties:
10549ec0686SRob Herring        compatible:
10649ec0686SRob Herring          not:
10749ec0686SRob Herring            contains:
10849ec0686SRob Herring              const: renesas,ipmmu-vmsa
10949ec0686SRob Herring    then:
11049ec0686SRob Herring      required:
11149ec0686SRob Herring        - power-domains
11249ec0686SRob Herring
113b67ab6fbSYoshihiro Shimoda  - if:
114b67ab6fbSYoshihiro Shimoda      properties:
115b67ab6fbSYoshihiro Shimoda        compatible:
116b67ab6fbSYoshihiro Shimoda          contains:
117b67ab6fbSYoshihiro Shimoda            const: renesas,rcar-gen4-ipmmu-vmsa
118b67ab6fbSYoshihiro Shimoda    then:
119b67ab6fbSYoshihiro Shimoda      properties:
120b67ab6fbSYoshihiro Shimoda        renesas,ipmmu-main:
121b67ab6fbSYoshihiro Shimoda          items:
122b67ab6fbSYoshihiro Shimoda            - maxItems: 1
123b67ab6fbSYoshihiro Shimoda    else:
124b67ab6fbSYoshihiro Shimoda      properties:
125b67ab6fbSYoshihiro Shimoda        renesas,ipmmu-main:
126b67ab6fbSYoshihiro Shimoda          items:
127b67ab6fbSYoshihiro Shimoda            - minItems: 2
128b67ab6fbSYoshihiro Shimoda
129dba496f3SYoshihiro Shimodaexamples:
130dba496f3SYoshihiro Shimoda  - |
131dba496f3SYoshihiro Shimoda    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
132dba496f3SYoshihiro Shimoda    #include <dt-bindings/interrupt-controller/arm-gic.h>
133dba496f3SYoshihiro Shimoda    #include <dt-bindings/power/r8a7791-sysc.h>
134dba496f3SYoshihiro Shimoda
135dba496f3SYoshihiro Shimoda    ipmmu_mx: iommu@fe951000 {
13691f93c38SRob Herring        compatible = "renesas,ipmmu-r8a7791", "renesas,ipmmu-vmsa";
137dba496f3SYoshihiro Shimoda        reg = <0xfe951000 0x1000>;
138dba496f3SYoshihiro Shimoda        interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
139dba496f3SYoshihiro Shimoda                     <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
140dba496f3SYoshihiro Shimoda        #iommu-cells = <1>;
141dba496f3SYoshihiro Shimoda    };
142