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 238456c544SAlex Elder See also soc/qcom/qcom,smp2p.txt and interconnect/interconnect.txt. See 248456c544SAlex Elder iommu/iommu.txt and iommu/arm,smmu.yaml for more information about SMMU 258456c544SAlex Elder bindings. 268456c544SAlex Elder 27fc39c40aSAlex Elder 28fc39c40aSAlex Elder - | 29fc39c40aSAlex Elder -------- --------- 30fc39c40aSAlex Elder | | | | 31fc39c40aSAlex Elder | AP +<---. .----+ Modem | 32fc39c40aSAlex Elder | +--. | | .->+ | 33fc39c40aSAlex Elder | | | | | | | | 34fc39c40aSAlex Elder -------- | | | | --------- 35fc39c40aSAlex Elder v | v | 36fc39c40aSAlex Elder --+-+---+-+-- 37fc39c40aSAlex Elder | GSI | 38fc39c40aSAlex Elder |-----------| 39fc39c40aSAlex Elder | | 40fc39c40aSAlex Elder | IPA | 41fc39c40aSAlex Elder | | 42fc39c40aSAlex Elder ------------- 43fc39c40aSAlex Elder 44fc39c40aSAlex Elderproperties: 45fc39c40aSAlex Elder compatible: 4615c88e18SAlex Elder enum: 472afd6c8bSAlex Elder - qcom,msm8998-ipa 4815c88e18SAlex Elder - qcom,sc7180-ipa 4915c88e18SAlex Elder - qcom,sc7280-ipa 5015c88e18SAlex Elder - qcom,sdm845-ipa 5115c88e18SAlex Elder - qcom,sdx55-ipa 52*0de10fd6SAlex Elder - qcom,sdx65-ipa 535071429fSLuca Weiss - qcom,sm6350-ipa 5415c88e18SAlex Elder - qcom,sm8350-ipa 55fc39c40aSAlex Elder 56fc39c40aSAlex Elder reg: 57fc39c40aSAlex Elder items: 58fc39c40aSAlex Elder - description: IPA registers 59fc39c40aSAlex Elder - description: IPA shared memory 60fc39c40aSAlex Elder - description: GSI registers 61fc39c40aSAlex Elder 62fc39c40aSAlex Elder reg-names: 63fc39c40aSAlex Elder items: 64fc39c40aSAlex Elder - const: ipa-reg 65fc39c40aSAlex Elder - const: ipa-shared 66fc39c40aSAlex Elder - const: gsi 67fc39c40aSAlex Elder 688456c544SAlex Elder iommus: 69950d566fSDavid Heidelberg minItems: 1 70950d566fSDavid Heidelberg maxItems: 2 718456c544SAlex Elder 72fc39c40aSAlex Elder clocks: 73fc39c40aSAlex Elder maxItems: 1 74fc39c40aSAlex Elder 75fc39c40aSAlex Elder clock-names: 76fc39c40aSAlex Elder const: core 77fc39c40aSAlex Elder 78fc39c40aSAlex Elder interrupts: 79fc39c40aSAlex Elder items: 80fc39c40aSAlex Elder - description: IPA interrupt (hardware IRQ) 81fc39c40aSAlex Elder - description: GSI interrupt (hardware IRQ) 82fc39c40aSAlex Elder - description: Modem clock query interrupt (smp2p interrupt) 83fc39c40aSAlex Elder - description: Modem setup ready interrupt (smp2p interrupt) 84fc39c40aSAlex Elder 85fc39c40aSAlex Elder interrupt-names: 86fc39c40aSAlex Elder items: 87fc39c40aSAlex Elder - const: ipa 88fc39c40aSAlex Elder - const: gsi 89fc39c40aSAlex Elder - const: ipa-clock-query 90fc39c40aSAlex Elder - const: ipa-setup-ready 91fc39c40aSAlex Elder 92fc39c40aSAlex Elder interconnects: 93b769cf44SAlex Elder oneOf: 94b769cf44SAlex Elder - items: 95b769cf44SAlex Elder - description: Path leading to system memory 96b769cf44SAlex Elder - description: Path between the AP and IPA config space 97b769cf44SAlex Elder - items: 98b769cf44SAlex Elder - description: Path leading to system memory 99b769cf44SAlex Elder - description: Path leading to internal memory 100b769cf44SAlex Elder - description: Path between the AP and IPA config space 101fc39c40aSAlex Elder 102fc39c40aSAlex Elder interconnect-names: 103b769cf44SAlex Elder oneOf: 104b769cf44SAlex Elder - items: 105b769cf44SAlex Elder - const: memory 106b769cf44SAlex Elder - const: config 107b769cf44SAlex Elder - items: 108fc39c40aSAlex Elder - const: memory 1096a0eb6c9SAlex Elder - const: imem 110a0221a0fSAlex Elder - const: config 111fc39c40aSAlex Elder 112ac62a017SAlex Elder qcom,qmp: 113ac62a017SAlex Elder $ref: /schemas/types.yaml#/definitions/phandle 114ac62a017SAlex Elder description: phandle to the AOSS side-channel message RAM 115ac62a017SAlex Elder 116fc39c40aSAlex Elder qcom,smem-states: 1173d21a460SRob Herring $ref: /schemas/types.yaml#/definitions/phandle-array 118fc39c40aSAlex Elder description: State bits used in by the AP to signal the modem. 119fc39c40aSAlex Elder items: 120fc39c40aSAlex Elder - description: Whether the "ipa-clock-enabled" state bit is valid 121fc39c40aSAlex Elder - description: Whether the IPA clock is enabled (if valid) 122fc39c40aSAlex Elder 123fc39c40aSAlex Elder qcom,smem-state-names: 124fc39c40aSAlex Elder description: The names of the state bits used for SMP2P output 125fc39c40aSAlex Elder items: 126fc39c40aSAlex Elder - const: ipa-clock-enabled-valid 127fc39c40aSAlex Elder - const: ipa-clock-enabled 128fc39c40aSAlex Elder 1294ca0c647SAlex Elder qcom,gsi-loader: 1304ca0c647SAlex Elder enum: 1314ca0c647SAlex Elder - self 1324ca0c647SAlex Elder - modem 133a49c3ab7SAlex Elder - skip 1344ca0c647SAlex Elder description: 1354ca0c647SAlex Elder Indicates how GSI firmware should be loaded. If the AP loads 1364ca0c647SAlex Elder and validates GSI firmware, this property has value "self". 1374ca0c647SAlex Elder If the modem does this, this property has value "modem". 138a49c3ab7SAlex Elder Otherwise, "skip" means GSI firmware loading is not required. 1394ca0c647SAlex Elder 140fc39c40aSAlex Elder modem-init: 1414ca0c647SAlex Elder deprecated: true 142fc39c40aSAlex Elder type: boolean 143fc39c40aSAlex Elder description: 1444ca0c647SAlex Elder This is the older (deprecated) way of indicating how GSI firmware 1454ca0c647SAlex Elder should be loaded. If present, the modem loads GSI firmware; if 1464ca0c647SAlex Elder absent, the AP loads GSI firmware. 147fc39c40aSAlex Elder 148fc39c40aSAlex Elder memory-region: 149fc39c40aSAlex Elder maxItems: 1 150fc39c40aSAlex Elder description: 151fc39c40aSAlex Elder If present, a phandle for a reserved memory area that holds 152fc39c40aSAlex Elder the firmware passed to Trust Zone for authentication. Required 1534ca0c647SAlex Elder when the AP (not the modem) performs early initialization. 154fc39c40aSAlex Elder 155d8604b20SAlex Elder firmware-name: 156d8604b20SAlex Elder $ref: /schemas/types.yaml#/definitions/string 157d8604b20SAlex Elder description: 158d8604b20SAlex Elder If present, name (or relative path) of the file within the 159d8604b20SAlex Elder firmware search path containing the firmware image used when 160d8604b20SAlex Elder initializing IPA hardware. Optional, and only used when 161d8604b20SAlex Elder Trust Zone performs early initialization. 162d8604b20SAlex Elder 163fc39c40aSAlex Elderrequired: 164fc39c40aSAlex Elder - compatible 1658456c544SAlex Elder - iommus 166fc39c40aSAlex Elder - reg 167fc39c40aSAlex Elder - clocks 168fc39c40aSAlex Elder - interrupts 169fc39c40aSAlex Elder - interconnects 170fc39c40aSAlex Elder - qcom,smem-states 171fc39c40aSAlex Elder 1724ca0c647SAlex ElderallOf: 1734ca0c647SAlex Elder # If qcom,gsi-loader is present, modem-init must not be present 1744ca0c647SAlex Elder - if: 1754ca0c647SAlex Elder required: 1764ca0c647SAlex Elder - qcom,gsi-loader 1774ca0c647SAlex Elder then: 1784ca0c647SAlex Elder properties: 1794ca0c647SAlex Elder modem-init: false 1804ca0c647SAlex Elder 1814ca0c647SAlex Elder # If qcom,gsi-loader is "self", the AP loads GSI firmware, and 1827a6ca44cSAlex Elder # memory-region must be specified 1837a6ca44cSAlex Elder if: 1844ca0c647SAlex Elder properties: 1854ca0c647SAlex Elder qcom,gsi-loader: 1864ca0c647SAlex Elder contains: 1874ca0c647SAlex Elder const: self 1884ca0c647SAlex Elder then: 1894ca0c647SAlex Elder required: 1904ca0c647SAlex Elder - memory-region 1914ca0c647SAlex Elder else: 1924ca0c647SAlex Elder # If qcom,gsi-loader is not present, we use deprecated behavior. 1934ca0c647SAlex Elder # If modem-init is not present, the AP loads GSI firmware, and 1944ca0c647SAlex Elder # memory-region must be specified. 1954ca0c647SAlex Elder if: 1967a6ca44cSAlex Elder not: 1977a6ca44cSAlex Elder required: 198fc39c40aSAlex Elder - modem-init 1997a6ca44cSAlex Elder then: 2007a6ca44cSAlex Elder required: 201fc39c40aSAlex Elder - memory-region 202fc39c40aSAlex Elder 2035be478f9SRob HerringadditionalProperties: false 2045be478f9SRob Herring 205fc39c40aSAlex Elderexamples: 206fc39c40aSAlex Elder - | 20727bb36edSAlex Elder #include <dt-bindings/interrupt-controller/arm-gic.h> 208e6e0f093SAlex Elder #include <dt-bindings/clock/qcom,rpmh.h> 209e6e0f093SAlex Elder #include <dt-bindings/interconnect/qcom,sdm845.h> 210e6e0f093SAlex Elder 211fc39c40aSAlex Elder smp2p-mpss { 212fc39c40aSAlex Elder compatible = "qcom,smp2p"; 213d49b3ae4SKrzysztof Kozlowski interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>; 214d49b3ae4SKrzysztof Kozlowski mboxes = <&apss_shared 6>; 215d49b3ae4SKrzysztof Kozlowski qcom,smem = <94>, <432>; 216d49b3ae4SKrzysztof Kozlowski qcom,local-pid = <0>; 217d49b3ae4SKrzysztof Kozlowski qcom,remote-pid = <5>; 218d49b3ae4SKrzysztof Kozlowski 219fc39c40aSAlex Elder ipa_smp2p_out: ipa-ap-to-modem { 220fc39c40aSAlex Elder qcom,entry-name = "ipa"; 221fc39c40aSAlex Elder #qcom,smem-state-cells = <1>; 222fc39c40aSAlex Elder }; 223fc39c40aSAlex Elder 224fc39c40aSAlex Elder ipa_smp2p_in: ipa-modem-to-ap { 225fc39c40aSAlex Elder qcom,entry-name = "ipa"; 226fc39c40aSAlex Elder interrupt-controller; 227fc39c40aSAlex Elder #interrupt-cells = <2>; 228fc39c40aSAlex Elder }; 229fc39c40aSAlex Elder }; 230d49b3ae4SKrzysztof Kozlowski 231fc39c40aSAlex Elder ipa@1e40000 { 2324ca0c647SAlex Elder compatible = "qcom,sc7180-ipa"; 233fc39c40aSAlex Elder 2344ca0c647SAlex Elder qcom,gsi-loader = "self"; 2354ca0c647SAlex Elder memory-region = <&ipa_fw_mem>; 2364ca0c647SAlex Elder firmware-name = "qcom/sc7180-trogdor/modem/modem.mdt"; 237fc39c40aSAlex Elder 2384ca0c647SAlex Elder iommus = <&apps_smmu 0x440 0x0>, 2394ca0c647SAlex Elder <&apps_smmu 0x442 0x0>; 240fba56184SRob Herring reg = <0x1e40000 0x7000>, 241fba56184SRob Herring <0x1e47000 0x2000>, 242fba56184SRob Herring <0x1e04000 0x2c000>; 243fc39c40aSAlex Elder reg-names = "ipa-reg", 244e6e0f093SAlex Elder "ipa-shared", 245fc39c40aSAlex Elder "gsi"; 246fc39c40aSAlex Elder 24727bb36edSAlex Elder interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>, 24827bb36edSAlex Elder <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>, 249fc39c40aSAlex Elder <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 250fc39c40aSAlex Elder <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>; 251fc39c40aSAlex Elder interrupt-names = "ipa", 252fc39c40aSAlex Elder "gsi", 253fc39c40aSAlex Elder "ipa-clock-query", 254fc39c40aSAlex Elder "ipa-setup-ready"; 255fc39c40aSAlex Elder 256fc39c40aSAlex Elder clocks = <&rpmhcc RPMH_IPA_CLK>; 257fc39c40aSAlex Elder clock-names = "core"; 258fc39c40aSAlex Elder 259fc39c40aSAlex Elder interconnects = 2604ca0c647SAlex Elder <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>, 2614ca0c647SAlex Elder <&aggre2_noc MASTER_IPA 0 &system_noc SLAVE_IMEM 0>, 2624ca0c647SAlex Elder <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_IPA_CFG 0>; 263fc39c40aSAlex Elder interconnect-names = "memory", 264a0221a0fSAlex Elder "imem", 265a0221a0fSAlex Elder "config"; 266fc39c40aSAlex Elder 267ac62a017SAlex Elder qcom,qmp = <&aoss_qmp>; 268ac62a017SAlex Elder 269fc39c40aSAlex Elder qcom,smem-states = <&ipa_smp2p_out 0>, 270fc39c40aSAlex Elder <&ipa_smp2p_out 1>; 271fc39c40aSAlex Elder qcom,smem-state-names = "ipa-clock-enabled-valid", 272fc39c40aSAlex Elder "ipa-clock-enabled"; 273fc39c40aSAlex Elder }; 274