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. 24 25 - | 26 -------- --------- 27 | | | | 28 | AP +<---. .----+ Modem | 29 | +--. | | .->+ | 30 | | | | | | | | 31 -------- | | | | --------- 32 v | v | 33 --+-+---+-+-- 34 | GSI | 35 |-----------| 36 | | 37 | IPA | 38 | | 39 ------------- 40 41properties: 42 compatible: 43 const: "qcom,sdm845-ipa" 44 45 reg: 46 items: 47 - description: IPA registers 48 - description: IPA shared memory 49 - description: GSI registers 50 51 reg-names: 52 items: 53 - const: ipa-reg 54 - const: ipa-shared 55 - const: gsi 56 57 clocks: 58 maxItems: 1 59 60 clock-names: 61 const: core 62 63 interrupts: 64 items: 65 - description: IPA interrupt (hardware IRQ) 66 - description: GSI interrupt (hardware IRQ) 67 - description: Modem clock query interrupt (smp2p interrupt) 68 - description: Modem setup ready interrupt (smp2p interrupt) 69 70 interrupt-names: 71 items: 72 - const: ipa 73 - const: gsi 74 - const: ipa-clock-query 75 - const: ipa-setup-ready 76 77 interconnects: 78 items: 79 - description: Interconnect path between IPA and main memory 80 - description: Interconnect path between IPA and internal memory 81 - description: Interconnect path between IPA and the AP subsystem 82 83 interconnect-names: 84 items: 85 - const: memory 86 - const: imem 87 - const: config 88 89 qcom,smem-states: 90 $ref: /schemas/types.yaml#/definitions/phandle-array 91 description: State bits used in by the AP to signal the modem. 92 items: 93 - description: Whether the "ipa-clock-enabled" state bit is valid 94 - description: Whether the IPA clock is enabled (if valid) 95 96 qcom,smem-state-names: 97 $ref: /schemas/types.yaml#/definitions/string-array 98 description: The names of the state bits used for SMP2P output 99 items: 100 - const: ipa-clock-enabled-valid 101 - const: ipa-clock-enabled 102 103 modem-init: 104 type: boolean 105 description: 106 If present, it indicates that the modem is responsible for 107 performing early IPA initialization, including loading and 108 validating firwmare used by the GSI. 109 110 modem-remoteproc: 111 $ref: /schemas/types.yaml#definitions/phandle 112 description: 113 This defines the phandle to the remoteproc node representing 114 the modem subsystem. This is requied so the IPA driver can 115 receive and act on notifications of modem up/down events. 116 117 memory-region: 118 $ref: /schemas/types.yaml#/definitions/phandle-array 119 maxItems: 1 120 description: 121 If present, a phandle for a reserved memory area that holds 122 the firmware passed to Trust Zone for authentication. Required 123 when Trust Zone (not the modem) performs early initialization. 124 125required: 126 - compatible 127 - reg 128 - clocks 129 - interrupts 130 - interconnects 131 - qcom,smem-states 132 - modem-remoteproc 133 134oneOf: 135 - required: 136 - modem-init 137 - required: 138 - memory-region 139 140examples: 141 - | 142 #include <dt-bindings/interrupt-controller/irq.h> 143 #include <dt-bindings/clock/qcom,rpmh.h> 144 #include <dt-bindings/interconnect/qcom,sdm845.h> 145 146 smp2p-mpss { 147 compatible = "qcom,smp2p"; 148 ipa_smp2p_out: ipa-ap-to-modem { 149 qcom,entry-name = "ipa"; 150 #qcom,smem-state-cells = <1>; 151 }; 152 153 ipa_smp2p_in: ipa-modem-to-ap { 154 qcom,entry-name = "ipa"; 155 interrupt-controller; 156 #interrupt-cells = <2>; 157 }; 158 }; 159 ipa@1e40000 { 160 compatible = "qcom,sdm845-ipa"; 161 162 modem-init; 163 modem-remoteproc = <&mss_pil>; 164 165 reg = <0x1e40000 0x7000>, 166 <0x1e47000 0x2000>, 167 <0x1e04000 0x2c000>; 168 reg-names = "ipa-reg", 169 "ipa-shared", 170 "gsi"; 171 172 interrupts-extended = <&intc 0 311 IRQ_TYPE_EDGE_RISING>, 173 <&intc 0 432 IRQ_TYPE_LEVEL_HIGH>, 174 <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 175 <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>; 176 interrupt-names = "ipa", 177 "gsi", 178 "ipa-clock-query", 179 "ipa-setup-ready"; 180 181 clocks = <&rpmhcc RPMH_IPA_CLK>; 182 clock-names = "core"; 183 184 interconnects = 185 <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>, 186 <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>, 187 <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>; 188 interconnect-names = "memory", 189 "imem", 190 "config"; 191 192 qcom,smem-states = <&ipa_smp2p_out 0>, 193 <&ipa_smp2p_out 1>; 194 qcom,smem-state-names = "ipa-clock-enabled-valid", 195 "ipa-clock-enabled"; 196 }; 197