1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/net/qcom,ipa.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm IP Accelerator (IPA) 8 9maintainers: 10 - Alex Elder <elder@kernel.org> 11 12description: 13 This binding describes the Qualcomm IPA. The IPA is capable of offloading 14 certain network processing tasks (e.g. filtering, routing, and NAT) from 15 the main processor. 16 17 The IPA sits between multiple independent "execution environments," 18 including the Application Processor (AP) and the modem. The IPA presents 19 a Generic Software Interface (GSI) to each execution environment. 20 The GSI is an integral part of the IPA, but it is logically isolated 21 and has a distinct interrupt and a separately-defined address space. 22 23 See also soc/qcom/qcom,smp2p.txt and interconnect/interconnect.txt. See 24 iommu/iommu.txt and iommu/arm,smmu.yaml for more information about SMMU 25 bindings. 26 27 28 - | 29 -------- --------- 30 | | | | 31 | AP +<---. .----+ Modem | 32 | +--. | | .->+ | 33 | | | | | | | | 34 -------- | | | | --------- 35 v | v | 36 --+-+---+-+-- 37 | GSI | 38 |-----------| 39 | | 40 | IPA | 41 | | 42 ------------- 43 44properties: 45 compatible: 46 enum: 47 - qcom,msm8998-ipa 48 - qcom,sc7180-ipa 49 - qcom,sc7280-ipa 50 - qcom,sdm845-ipa 51 - qcom,sdx55-ipa 52 - qcom,sm8350-ipa 53 54 reg: 55 items: 56 - description: IPA registers 57 - description: IPA shared memory 58 - description: GSI registers 59 60 reg-names: 61 items: 62 - const: ipa-reg 63 - const: ipa-shared 64 - const: gsi 65 66 iommus: 67 maxItems: 1 68 69 clocks: 70 maxItems: 1 71 72 clock-names: 73 const: core 74 75 interrupts: 76 items: 77 - description: IPA interrupt (hardware IRQ) 78 - description: GSI interrupt (hardware IRQ) 79 - description: Modem clock query interrupt (smp2p interrupt) 80 - description: Modem setup ready interrupt (smp2p interrupt) 81 82 interrupt-names: 83 items: 84 - const: ipa 85 - const: gsi 86 - const: ipa-clock-query 87 - const: ipa-setup-ready 88 89 interconnects: 90 oneOf: 91 - items: 92 - description: Path leading to system memory 93 - description: Path between the AP and IPA config space 94 - items: 95 - description: Path leading to system memory 96 - description: Path leading to internal memory 97 - description: Path between the AP and IPA config space 98 99 interconnect-names: 100 oneOf: 101 - items: 102 - const: memory 103 - const: config 104 - items: 105 - const: memory 106 - const: imem 107 - const: config 108 109 qcom,smem-states: 110 $ref: /schemas/types.yaml#/definitions/phandle-array 111 description: State bits used in by the AP to signal the modem. 112 items: 113 - description: Whether the "ipa-clock-enabled" state bit is valid 114 - description: Whether the IPA clock is enabled (if valid) 115 116 qcom,smem-state-names: 117 description: The names of the state bits used for SMP2P output 118 items: 119 - const: ipa-clock-enabled-valid 120 - const: ipa-clock-enabled 121 122 modem-init: 123 type: boolean 124 description: 125 If present, it indicates that the modem is responsible for 126 performing early IPA initialization, including loading and 127 validating firwmare used by the GSI. 128 129 memory-region: 130 maxItems: 1 131 description: 132 If present, a phandle for a reserved memory area that holds 133 the firmware passed to Trust Zone for authentication. Required 134 when Trust Zone (not the modem) performs early initialization. 135 136 firmware-name: 137 $ref: /schemas/types.yaml#/definitions/string 138 description: 139 If present, name (or relative path) of the file within the 140 firmware search path containing the firmware image used when 141 initializing IPA hardware. Optional, and only used when 142 Trust Zone performs early initialization. 143 144required: 145 - compatible 146 - iommus 147 - reg 148 - clocks 149 - interrupts 150 - interconnects 151 - qcom,smem-states 152 153# Either modem-init is present, or memory-region must be present. 154oneOf: 155 - required: 156 - modem-init 157 - required: 158 - memory-region 159 160# If memory-region is present, firmware-name may optionally be present. 161# But if modem-init is present, firmware-name must not be present. 162if: 163 required: 164 - modem-init 165then: 166 not: 167 required: 168 - firmware-name 169 170additionalProperties: false 171 172examples: 173 - | 174 #include <dt-bindings/interrupt-controller/arm-gic.h> 175 #include <dt-bindings/clock/qcom,rpmh.h> 176 #include <dt-bindings/interconnect/qcom,sdm845.h> 177 178 smp2p-mpss { 179 compatible = "qcom,smp2p"; 180 ipa_smp2p_out: ipa-ap-to-modem { 181 qcom,entry-name = "ipa"; 182 #qcom,smem-state-cells = <1>; 183 }; 184 185 ipa_smp2p_in: ipa-modem-to-ap { 186 qcom,entry-name = "ipa"; 187 interrupt-controller; 188 #interrupt-cells = <2>; 189 }; 190 }; 191 ipa@1e40000 { 192 compatible = "qcom,sdm845-ipa"; 193 194 modem-init; 195 196 iommus = <&apps_smmu 0x720 0x3>; 197 reg = <0x1e40000 0x7000>, 198 <0x1e47000 0x2000>, 199 <0x1e04000 0x2c000>; 200 reg-names = "ipa-reg", 201 "ipa-shared", 202 "gsi"; 203 204 interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>, 205 <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>, 206 <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 207 <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>; 208 interrupt-names = "ipa", 209 "gsi", 210 "ipa-clock-query", 211 "ipa-setup-ready"; 212 213 clocks = <&rpmhcc RPMH_IPA_CLK>; 214 clock-names = "core"; 215 216 interconnects = 217 <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>, 218 <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>, 219 <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>; 220 interconnect-names = "memory", 221 "imem", 222 "config"; 223 224 qcom,smem-states = <&ipa_smp2p_out 0>, 225 <&ipa_smp2p_out 1>; 226 qcom,smem-state-names = "ipa-clock-enabled-valid", 227 "ipa-clock-enabled"; 228 }; 229