xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/iommu/renesas,ipmmu-vmsa.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Renesas VMSA-Compatible IOMMU
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyundescription:
13*4882a593Smuzhiyun  The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables.
14*4882a593Smuzhiyun  It provides address translation for bus masters outside of the CPU, each
15*4882a593Smuzhiyun  connected to the IPMMU through a port called micro-TLB.
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunproperties:
18*4882a593Smuzhiyun  compatible:
19*4882a593Smuzhiyun    oneOf:
20*4882a593Smuzhiyun      - items:
21*4882a593Smuzhiyun          - enum:
22*4882a593Smuzhiyun              - renesas,ipmmu-r8a73a4  # R-Mobile APE6
23*4882a593Smuzhiyun              - renesas,ipmmu-r8a7742  # RZ/G1H
24*4882a593Smuzhiyun              - renesas,ipmmu-r8a7743  # RZ/G1M
25*4882a593Smuzhiyun              - renesas,ipmmu-r8a7744  # RZ/G1N
26*4882a593Smuzhiyun              - renesas,ipmmu-r8a7745  # RZ/G1E
27*4882a593Smuzhiyun              - renesas,ipmmu-r8a7790  # R-Car H2
28*4882a593Smuzhiyun              - renesas,ipmmu-r8a7791  # R-Car M2-W
29*4882a593Smuzhiyun              - renesas,ipmmu-r8a7793  # R-Car M2-N
30*4882a593Smuzhiyun              - renesas,ipmmu-r8a7794  # R-Car E2
31*4882a593Smuzhiyun          - const: renesas,ipmmu-vmsa  # R-Mobile APE6 or R-Car Gen2 or RZ/G1
32*4882a593Smuzhiyun      - items:
33*4882a593Smuzhiyun          - enum:
34*4882a593Smuzhiyun              - renesas,ipmmu-r8a774a1 # RZ/G2M
35*4882a593Smuzhiyun              - renesas,ipmmu-r8a774b1 # RZ/G2N
36*4882a593Smuzhiyun              - renesas,ipmmu-r8a774c0 # RZ/G2E
37*4882a593Smuzhiyun              - renesas,ipmmu-r8a774e1 # RZ/G2H
38*4882a593Smuzhiyun              - renesas,ipmmu-r8a7795  # R-Car H3
39*4882a593Smuzhiyun              - renesas,ipmmu-r8a7796  # R-Car M3-W
40*4882a593Smuzhiyun              - renesas,ipmmu-r8a77961 # R-Car M3-W+
41*4882a593Smuzhiyun              - renesas,ipmmu-r8a77965 # R-Car M3-N
42*4882a593Smuzhiyun              - renesas,ipmmu-r8a77970 # R-Car V3M
43*4882a593Smuzhiyun              - renesas,ipmmu-r8a77980 # R-Car V3H
44*4882a593Smuzhiyun              - renesas,ipmmu-r8a77990 # R-Car E3
45*4882a593Smuzhiyun              - renesas,ipmmu-r8a77995 # R-Car D3
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun  reg:
48*4882a593Smuzhiyun    maxItems: 1
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun  interrupts:
51*4882a593Smuzhiyun    minItems: 1
52*4882a593Smuzhiyun    maxItems: 2
53*4882a593Smuzhiyun    description:
54*4882a593Smuzhiyun      Specifiers for the MMU fault interrupts. Not required for cache IPMMUs.
55*4882a593Smuzhiyun    items:
56*4882a593Smuzhiyun      - description: non-secure mode
57*4882a593Smuzhiyun      - description: secure mode if supported
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun  '#iommu-cells':
60*4882a593Smuzhiyun    const: 1
61*4882a593Smuzhiyun    description:
62*4882a593Smuzhiyun      The number of the micro-TLB that the device is connected to.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun  power-domains:
65*4882a593Smuzhiyun    maxItems: 1
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun  renesas,ipmmu-main:
68*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/phandle-array
69*4882a593Smuzhiyun    description:
70*4882a593Smuzhiyun      Reference to the main IPMMU phandle plus 1 cell. The cell is
71*4882a593Smuzhiyun      the interrupt bit number associated with the particular cache IPMMU
72*4882a593Smuzhiyun      device. The interrupt bit number needs to match the main IPMMU IMSSTR
73*4882a593Smuzhiyun      register. Only used by cache IPMMU instances.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunrequired:
76*4882a593Smuzhiyun  - compatible
77*4882a593Smuzhiyun  - reg
78*4882a593Smuzhiyun  - '#iommu-cells'
79*4882a593Smuzhiyun  - power-domains
80*4882a593Smuzhiyun
81*4882a593SmuzhiyunoneOf:
82*4882a593Smuzhiyun  - required:
83*4882a593Smuzhiyun      - interrupts
84*4882a593Smuzhiyun  - required:
85*4882a593Smuzhiyun      - renesas,ipmmu-main
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunadditionalProperties: false
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunexamples:
90*4882a593Smuzhiyun  - |
91*4882a593Smuzhiyun    #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
92*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/arm-gic.h>
93*4882a593Smuzhiyun    #include <dt-bindings/power/r8a7791-sysc.h>
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun    ipmmu_mx: iommu@fe951000 {
96*4882a593Smuzhiyun        compatible = "renasas,ipmmu-r8a7791", "renasas,ipmmu-vmsa";
97*4882a593Smuzhiyun        reg = <0xfe951000 0x1000>;
98*4882a593Smuzhiyun        interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
99*4882a593Smuzhiyun                     <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
100*4882a593Smuzhiyun        #iommu-cells = <1>;
101*4882a593Smuzhiyun    };
102