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