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 minItems: 1 68 maxItems: 2 69 70 clocks: 71 maxItems: 1 72 73 clock-names: 74 const: core 75 76 interrupts: 77 items: 78 - description: IPA interrupt (hardware IRQ) 79 - description: GSI interrupt (hardware IRQ) 80 - description: Modem clock query interrupt (smp2p interrupt) 81 - description: Modem setup ready interrupt (smp2p interrupt) 82 83 interrupt-names: 84 items: 85 - const: ipa 86 - const: gsi 87 - const: ipa-clock-query 88 - const: ipa-setup-ready 89 90 interconnects: 91 oneOf: 92 - items: 93 - description: Path leading to system memory 94 - description: Path between the AP and IPA config space 95 - items: 96 - description: Path leading to system memory 97 - description: Path leading to internal memory 98 - description: Path between the AP and IPA config space 99 100 interconnect-names: 101 oneOf: 102 - items: 103 - const: memory 104 - const: config 105 - items: 106 - const: memory 107 - const: imem 108 - const: config 109 110 qcom,smem-states: 111 $ref: /schemas/types.yaml#/definitions/phandle-array 112 description: State bits used in by the AP to signal the modem. 113 items: 114 - description: Whether the "ipa-clock-enabled" state bit is valid 115 - description: Whether the IPA clock is enabled (if valid) 116 117 qcom,smem-state-names: 118 description: The names of the state bits used for SMP2P output 119 items: 120 - const: ipa-clock-enabled-valid 121 - const: ipa-clock-enabled 122 123 modem-init: 124 type: boolean 125 description: 126 If present, it indicates that the modem is responsible for 127 performing early IPA initialization, including loading and 128 validating firwmare used by the GSI. 129 130 memory-region: 131 maxItems: 1 132 description: 133 If present, a phandle for a reserved memory area that holds 134 the firmware passed to Trust Zone for authentication. Required 135 when Trust Zone (not the modem) performs early initialization. 136 137 firmware-name: 138 $ref: /schemas/types.yaml#/definitions/string 139 description: 140 If present, name (or relative path) of the file within the 141 firmware search path containing the firmware image used when 142 initializing IPA hardware. Optional, and only used when 143 Trust Zone performs early initialization. 144 145required: 146 - compatible 147 - iommus 148 - reg 149 - clocks 150 - interrupts 151 - interconnects 152 - qcom,smem-states 153 154# Either modem-init is present, or memory-region must be present. 155oneOf: 156 - required: 157 - modem-init 158 - required: 159 - memory-region 160 161# If memory-region is present, firmware-name may optionally be present. 162# But if modem-init is present, firmware-name must not be present. 163if: 164 required: 165 - modem-init 166then: 167 not: 168 required: 169 - firmware-name 170 171additionalProperties: false 172 173examples: 174 - | 175 #include <dt-bindings/interrupt-controller/arm-gic.h> 176 #include <dt-bindings/clock/qcom,rpmh.h> 177 #include <dt-bindings/interconnect/qcom,sdm845.h> 178 179 smp2p-mpss { 180 compatible = "qcom,smp2p"; 181 ipa_smp2p_out: ipa-ap-to-modem { 182 qcom,entry-name = "ipa"; 183 #qcom,smem-state-cells = <1>; 184 }; 185 186 ipa_smp2p_in: ipa-modem-to-ap { 187 qcom,entry-name = "ipa"; 188 interrupt-controller; 189 #interrupt-cells = <2>; 190 }; 191 }; 192 ipa@1e40000 { 193 compatible = "qcom,sdm845-ipa"; 194 195 modem-init; 196 197 iommus = <&apps_smmu 0x720 0x3>; 198 reg = <0x1e40000 0x7000>, 199 <0x1e47000 0x2000>, 200 <0x1e04000 0x2c000>; 201 reg-names = "ipa-reg", 202 "ipa-shared", 203 "gsi"; 204 205 interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>, 206 <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>, 207 <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 208 <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>; 209 interrupt-names = "ipa", 210 "gsi", 211 "ipa-clock-query", 212 "ipa-setup-ready"; 213 214 clocks = <&rpmhcc RPMH_IPA_CLK>; 215 clock-names = "core"; 216 217 interconnects = 218 <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>, 219 <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>, 220 <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>; 221 interconnect-names = "memory", 222 "imem", 223 "config"; 224 225 qcom,smem-states = <&ipa_smp2p_out 0>, 226 <&ipa_smp2p_out 1>; 227 qcom,smem-state-names = "ipa-clock-enabled-valid", 228 "ipa-clock-enabled"; 229 }; 230