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