1fc39c40aSAlex Elder# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 2fc39c40aSAlex Elder%YAML 1.2 3fc39c40aSAlex Elder--- 4fc39c40aSAlex Elder$id: http://devicetree.org/schemas/net/qcom,ipa.yaml# 5fc39c40aSAlex Elder$schema: http://devicetree.org/meta-schemas/core.yaml# 6fc39c40aSAlex Elder 7fc39c40aSAlex Eldertitle: Qualcomm IP Accelerator (IPA) 8fc39c40aSAlex Elder 9fc39c40aSAlex Eldermaintainers: 10fc39c40aSAlex Elder - Alex Elder <elder@kernel.org> 11fc39c40aSAlex Elder 12fc39c40aSAlex Elderdescription: 13fc39c40aSAlex Elder This binding describes the Qualcomm IPA. The IPA is capable of offloading 14fc39c40aSAlex Elder certain network processing tasks (e.g. filtering, routing, and NAT) from 15fc39c40aSAlex Elder the main processor. 16fc39c40aSAlex Elder 17fc39c40aSAlex Elder The IPA sits between multiple independent "execution environments," 18fc39c40aSAlex Elder including the Application Processor (AP) and the modem. The IPA presents 19fc39c40aSAlex Elder a Generic Software Interface (GSI) to each execution environment. 20fc39c40aSAlex Elder The GSI is an integral part of the IPA, but it is logically isolated 21fc39c40aSAlex Elder and has a distinct interrupt and a separately-defined address space. 22fc39c40aSAlex Elder 23fc39c40aSAlex Elder See also soc/qcom/qcom,smp2p.txt and interconnect/interconnect.txt. 24fc39c40aSAlex Elder 25fc39c40aSAlex Elder - | 26fc39c40aSAlex Elder -------- --------- 27fc39c40aSAlex Elder | | | | 28fc39c40aSAlex Elder | AP +<---. .----+ Modem | 29fc39c40aSAlex Elder | +--. | | .->+ | 30fc39c40aSAlex Elder | | | | | | | | 31fc39c40aSAlex Elder -------- | | | | --------- 32fc39c40aSAlex Elder v | v | 33fc39c40aSAlex Elder --+-+---+-+-- 34fc39c40aSAlex Elder | GSI | 35fc39c40aSAlex Elder |-----------| 36fc39c40aSAlex Elder | | 37fc39c40aSAlex Elder | IPA | 38fc39c40aSAlex Elder | | 39fc39c40aSAlex Elder ------------- 40fc39c40aSAlex Elder 41fc39c40aSAlex Elderproperties: 42fc39c40aSAlex Elder compatible: 43fc39c40aSAlex Elder const: "qcom,sdm845-ipa" 44fc39c40aSAlex Elder 45fc39c40aSAlex Elder reg: 46fc39c40aSAlex Elder items: 47fc39c40aSAlex Elder - description: IPA registers 48fc39c40aSAlex Elder - description: IPA shared memory 49fc39c40aSAlex Elder - description: GSI registers 50fc39c40aSAlex Elder 51fc39c40aSAlex Elder reg-names: 52fc39c40aSAlex Elder items: 53fc39c40aSAlex Elder - const: ipa-reg 54fc39c40aSAlex Elder - const: ipa-shared 55fc39c40aSAlex Elder - const: gsi 56fc39c40aSAlex Elder 57fc39c40aSAlex Elder clocks: 58fc39c40aSAlex Elder maxItems: 1 59fc39c40aSAlex Elder 60fc39c40aSAlex Elder clock-names: 61fc39c40aSAlex Elder const: core 62fc39c40aSAlex Elder 63fc39c40aSAlex Elder interrupts: 64fc39c40aSAlex Elder items: 65fc39c40aSAlex Elder - description: IPA interrupt (hardware IRQ) 66fc39c40aSAlex Elder - description: GSI interrupt (hardware IRQ) 67fc39c40aSAlex Elder - description: Modem clock query interrupt (smp2p interrupt) 68fc39c40aSAlex Elder - description: Modem setup ready interrupt (smp2p interrupt) 69fc39c40aSAlex Elder 70fc39c40aSAlex Elder interrupt-names: 71fc39c40aSAlex Elder items: 72fc39c40aSAlex Elder - const: ipa 73fc39c40aSAlex Elder - const: gsi 74fc39c40aSAlex Elder - const: ipa-clock-query 75fc39c40aSAlex Elder - const: ipa-setup-ready 76fc39c40aSAlex Elder 77fc39c40aSAlex Elder interconnects: 78fc39c40aSAlex Elder items: 79fc39c40aSAlex Elder - description: Interconnect path between IPA and main memory 80fc39c40aSAlex Elder - description: Interconnect path between IPA and internal memory 81fc39c40aSAlex Elder - description: Interconnect path between IPA and the AP subsystem 82fc39c40aSAlex Elder 83fc39c40aSAlex Elder interconnect-names: 84fc39c40aSAlex Elder items: 85fc39c40aSAlex Elder - const: memory 86fc39c40aSAlex Elder - const: imem 87fc39c40aSAlex Elder - const: config 88fc39c40aSAlex Elder 89fc39c40aSAlex Elder qcom,smem-states: 90fc39c40aSAlex Elder $ref: /schemas/types.yaml#/definitions/phandle-array 91fc39c40aSAlex Elder description: State bits used in by the AP to signal the modem. 92fc39c40aSAlex Elder items: 93fc39c40aSAlex Elder - description: Whether the "ipa-clock-enabled" state bit is valid 94fc39c40aSAlex Elder - description: Whether the IPA clock is enabled (if valid) 95fc39c40aSAlex Elder 96fc39c40aSAlex Elder qcom,smem-state-names: 97fc39c40aSAlex Elder $ref: /schemas/types.yaml#/definitions/string-array 98fc39c40aSAlex Elder description: The names of the state bits used for SMP2P output 99fc39c40aSAlex Elder items: 100fc39c40aSAlex Elder - const: ipa-clock-enabled-valid 101fc39c40aSAlex Elder - const: ipa-clock-enabled 102fc39c40aSAlex Elder 103fc39c40aSAlex Elder modem-init: 104fc39c40aSAlex Elder type: boolean 105fc39c40aSAlex Elder description: 106fc39c40aSAlex Elder If present, it indicates that the modem is responsible for 107fc39c40aSAlex Elder performing early IPA initialization, including loading and 108fc39c40aSAlex Elder validating firwmare used by the GSI. 109fc39c40aSAlex Elder 110fc39c40aSAlex Elder modem-remoteproc: 111fc39c40aSAlex Elder $ref: /schemas/types.yaml#definitions/phandle 112fc39c40aSAlex Elder description: 113fc39c40aSAlex Elder This defines the phandle to the remoteproc node representing 114fc39c40aSAlex Elder the modem subsystem. This is requied so the IPA driver can 115fc39c40aSAlex Elder receive and act on notifications of modem up/down events. 116fc39c40aSAlex Elder 117fc39c40aSAlex Elder memory-region: 118fc39c40aSAlex Elder $ref: /schemas/types.yaml#/definitions/phandle-array 119fc39c40aSAlex Elder maxItems: 1 120fc39c40aSAlex Elder description: 121fc39c40aSAlex Elder If present, a phandle for a reserved memory area that holds 122fc39c40aSAlex Elder the firmware passed to Trust Zone for authentication. Required 123fc39c40aSAlex Elder when Trust Zone (not the modem) performs early initialization. 124fc39c40aSAlex Elder 125fc39c40aSAlex Elderrequired: 126fc39c40aSAlex Elder - compatible 127fc39c40aSAlex Elder - reg 128fc39c40aSAlex Elder - clocks 129fc39c40aSAlex Elder - interrupts 130fc39c40aSAlex Elder - interconnects 131fc39c40aSAlex Elder - qcom,smem-states 132fc39c40aSAlex Elder - modem-remoteproc 133fc39c40aSAlex Elder 134fc39c40aSAlex ElderoneOf: 135fc39c40aSAlex Elder - required: 136fc39c40aSAlex Elder - modem-init 137fc39c40aSAlex Elder - required: 138fc39c40aSAlex Elder - memory-region 139fc39c40aSAlex Elder 140fc39c40aSAlex Elderexamples: 141fc39c40aSAlex Elder - | 142fc39c40aSAlex Elder smp2p-mpss { 143fc39c40aSAlex Elder compatible = "qcom,smp2p"; 144fc39c40aSAlex Elder ipa_smp2p_out: ipa-ap-to-modem { 145fc39c40aSAlex Elder qcom,entry-name = "ipa"; 146fc39c40aSAlex Elder #qcom,smem-state-cells = <1>; 147fc39c40aSAlex Elder }; 148fc39c40aSAlex Elder 149fc39c40aSAlex Elder ipa_smp2p_in: ipa-modem-to-ap { 150fc39c40aSAlex Elder qcom,entry-name = "ipa"; 151fc39c40aSAlex Elder interrupt-controller; 152fc39c40aSAlex Elder #interrupt-cells = <2>; 153fc39c40aSAlex Elder }; 154fc39c40aSAlex Elder }; 155fc39c40aSAlex Elder ipa@1e40000 { 156fc39c40aSAlex Elder compatible = "qcom,sdm845-ipa"; 157fc39c40aSAlex Elder 158fc39c40aSAlex Elder modem-init; 159fc39c40aSAlex Elder modem-remoteproc = <&mss_pil>; 160fc39c40aSAlex Elder 161fc39c40aSAlex Elder reg = <0 0x1e40000 0 0x7000>, 162fc39c40aSAlex Elder <0 0x1e47000 0 0x2000>, 163fc39c40aSAlex Elder <0 0x1e04000 0 0x2c000>; 164fc39c40aSAlex Elder reg-names = "ipa-reg", 165fc39c40aSAlex Elder "ipa-shared"; 166fc39c40aSAlex Elder "gsi"; 167fc39c40aSAlex Elder 168fc39c40aSAlex Elder interrupts-extended = <&intc 0 311 IRQ_TYPE_EDGE_RISING>, 169fc39c40aSAlex Elder <&intc 0 432 IRQ_TYPE_LEVEL_HIGH>, 170fc39c40aSAlex Elder <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 171fc39c40aSAlex Elder <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>; 172fc39c40aSAlex Elder interrupt-names = "ipa", 173fc39c40aSAlex Elder "gsi", 174fc39c40aSAlex Elder "ipa-clock-query", 175fc39c40aSAlex Elder "ipa-setup-ready"; 176fc39c40aSAlex Elder 177fc39c40aSAlex Elder clocks = <&rpmhcc RPMH_IPA_CLK>; 178fc39c40aSAlex Elder clock-names = "core"; 179fc39c40aSAlex Elder 180fc39c40aSAlex Elder interconnects = 181fc39c40aSAlex Elder <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>, 182fc39c40aSAlex Elder <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>, 183fc39c40aSAlex Elder <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>; 184fc39c40aSAlex Elder interconnect-names = "memory", 185fc39c40aSAlex Elder "imem", 186fc39c40aSAlex Elder "config"; 187fc39c40aSAlex Elder 188fc39c40aSAlex Elder qcom,smem-states = <&ipa_smp2p_out 0>, 189fc39c40aSAlex Elder <&ipa_smp2p_out 1>; 190fc39c40aSAlex Elder qcom,smem-state-names = "ipa-clock-enabled-valid", 191fc39c40aSAlex Elder "ipa-clock-enabled"; 192fc39c40aSAlex Elder }; 193