1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iommu/qcom,iommu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies legacy IOMMU implementations
8
9maintainers:
10  - Konrad Dybcio <konrad.dybcio@linaro.org>
11
12description: |
13  Qualcomm "B" family devices which are not compatible with arm-smmu have
14  a similar looking IOMMU, but without access to the global register space
15  and optionally requiring additional configuration to route context IRQs
16  to non-secure vs secure interrupt line.
17
18properties:
19  compatible:
20    oneOf:
21      - items:
22          - enum:
23              - qcom,msm8916-iommu
24              - qcom,msm8953-iommu
25          - const: qcom,msm-iommu-v1
26      - items:
27          - enum:
28              - qcom,msm8976-iommu
29          - const: qcom,msm-iommu-v2
30
31  clocks:
32    items:
33      - description: Clock required for IOMMU register group access
34      - description: Clock required for underlying bus access
35
36  clock-names:
37    items:
38      - const: iface
39      - const: bus
40
41  power-domains:
42    maxItems: 1
43
44  reg:
45    maxItems: 1
46
47  ranges: true
48
49  qcom,iommu-secure-id:
50    $ref: /schemas/types.yaml#/definitions/uint32
51    description:
52      The SCM secure ID of the IOMMU instance.
53
54  '#address-cells':
55    const: 1
56
57  '#size-cells':
58    const: 1
59
60  '#iommu-cells':
61    const: 1
62
63patternProperties:
64  "^iommu-ctx@[0-9a-f]+$":
65    type: object
66    additionalProperties: false
67    properties:
68      compatible:
69        enum:
70          - qcom,msm-iommu-v1-ns
71          - qcom,msm-iommu-v1-sec
72          - qcom,msm-iommu-v2-ns
73          - qcom,msm-iommu-v2-sec
74
75      interrupts:
76        maxItems: 1
77
78      reg:
79        maxItems: 1
80
81      qcom,ctx-asid:
82        $ref: /schemas/types.yaml#/definitions/uint32
83        description:
84          The ASID number associated to the context bank.
85
86    required:
87      - compatible
88      - interrupts
89      - reg
90
91required:
92  - compatible
93  - clocks
94  - clock-names
95  - ranges
96  - '#address-cells'
97  - '#size-cells'
98  - '#iommu-cells'
99
100additionalProperties: false
101
102examples:
103  - |
104    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
105    #include <dt-bindings/interrupt-controller/arm-gic.h>
106
107    apps_iommu: iommu@1e20000 {
108      compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
109      reg = <0x01ef0000 0x3000>;
110      clocks = <&gcc GCC_SMMU_CFG_CLK>,
111               <&gcc GCC_APSS_TCU_CLK>;
112      clock-names = "iface", "bus";
113      qcom,iommu-secure-id = <17>;
114      #address-cells = <1>;
115      #size-cells = <1>;
116      #iommu-cells = <1>;
117      ranges = <0 0x01e20000 0x40000>;
118
119      /* mdp_0: */
120      iommu-ctx@4000 {
121        compatible = "qcom,msm-iommu-v1-ns";
122        reg = <0x4000 0x1000>;
123        interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
124      };
125    };
126