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 5215c88e18SAlex Elder - qcom,sm8350-ipa 53fc39c40aSAlex Elder 54fc39c40aSAlex Elder reg: 55fc39c40aSAlex Elder items: 56fc39c40aSAlex Elder - description: IPA registers 57fc39c40aSAlex Elder - description: IPA shared memory 58fc39c40aSAlex Elder - description: GSI registers 59fc39c40aSAlex Elder 60fc39c40aSAlex Elder reg-names: 61fc39c40aSAlex Elder items: 62fc39c40aSAlex Elder - const: ipa-reg 63fc39c40aSAlex Elder - const: ipa-shared 64fc39c40aSAlex Elder - const: gsi 65fc39c40aSAlex Elder 668456c544SAlex Elder iommus: 67950d566fSDavid Heidelberg minItems: 1 68950d566fSDavid Heidelberg maxItems: 2 698456c544SAlex Elder 70fc39c40aSAlex Elder clocks: 71fc39c40aSAlex Elder maxItems: 1 72fc39c40aSAlex Elder 73fc39c40aSAlex Elder clock-names: 74fc39c40aSAlex Elder const: core 75fc39c40aSAlex Elder 76fc39c40aSAlex Elder interrupts: 77fc39c40aSAlex Elder items: 78fc39c40aSAlex Elder - description: IPA interrupt (hardware IRQ) 79fc39c40aSAlex Elder - description: GSI interrupt (hardware IRQ) 80fc39c40aSAlex Elder - description: Modem clock query interrupt (smp2p interrupt) 81fc39c40aSAlex Elder - description: Modem setup ready interrupt (smp2p interrupt) 82fc39c40aSAlex Elder 83fc39c40aSAlex Elder interrupt-names: 84fc39c40aSAlex Elder items: 85fc39c40aSAlex Elder - const: ipa 86fc39c40aSAlex Elder - const: gsi 87fc39c40aSAlex Elder - const: ipa-clock-query 88fc39c40aSAlex Elder - const: ipa-setup-ready 89fc39c40aSAlex Elder 90fc39c40aSAlex Elder interconnects: 91b769cf44SAlex Elder oneOf: 92b769cf44SAlex Elder - items: 93b769cf44SAlex Elder - description: Path leading to system memory 94b769cf44SAlex Elder - description: Path between the AP and IPA config space 95b769cf44SAlex Elder - items: 96b769cf44SAlex Elder - description: Path leading to system memory 97b769cf44SAlex Elder - description: Path leading to internal memory 98b769cf44SAlex Elder - description: Path between the AP and IPA config space 99fc39c40aSAlex Elder 100fc39c40aSAlex Elder interconnect-names: 101b769cf44SAlex Elder oneOf: 102b769cf44SAlex Elder - items: 103b769cf44SAlex Elder - const: memory 104b769cf44SAlex Elder - const: config 105b769cf44SAlex Elder - items: 106fc39c40aSAlex Elder - const: memory 1076a0eb6c9SAlex Elder - const: imem 108a0221a0fSAlex Elder - const: config 109fc39c40aSAlex Elder 110ac62a017SAlex Elder qcom,qmp: 111ac62a017SAlex Elder $ref: /schemas/types.yaml#/definitions/phandle 112ac62a017SAlex Elder description: phandle to the AOSS side-channel message RAM 113ac62a017SAlex Elder 114fc39c40aSAlex Elder qcom,smem-states: 1153d21a460SRob Herring $ref: /schemas/types.yaml#/definitions/phandle-array 116fc39c40aSAlex Elder description: State bits used in by the AP to signal the modem. 117fc39c40aSAlex Elder items: 118fc39c40aSAlex Elder - description: Whether the "ipa-clock-enabled" state bit is valid 119fc39c40aSAlex Elder - description: Whether the IPA clock is enabled (if valid) 120fc39c40aSAlex Elder 121fc39c40aSAlex Elder qcom,smem-state-names: 122fc39c40aSAlex Elder description: The names of the state bits used for SMP2P output 123fc39c40aSAlex Elder items: 124fc39c40aSAlex Elder - const: ipa-clock-enabled-valid 125fc39c40aSAlex Elder - const: ipa-clock-enabled 126fc39c40aSAlex Elder 127fc39c40aSAlex Elder modem-init: 128fc39c40aSAlex Elder type: boolean 129fc39c40aSAlex Elder description: 130fc39c40aSAlex Elder If present, it indicates that the modem is responsible for 131fc39c40aSAlex Elder performing early IPA initialization, including loading and 132fc39c40aSAlex Elder validating firwmare used by the GSI. 133fc39c40aSAlex Elder 134fc39c40aSAlex Elder memory-region: 135fc39c40aSAlex Elder maxItems: 1 136fc39c40aSAlex Elder description: 137fc39c40aSAlex Elder If present, a phandle for a reserved memory area that holds 138fc39c40aSAlex Elder the firmware passed to Trust Zone for authentication. Required 139fc39c40aSAlex Elder when Trust Zone (not the modem) performs early initialization. 140fc39c40aSAlex Elder 141d8604b20SAlex Elder firmware-name: 142d8604b20SAlex Elder $ref: /schemas/types.yaml#/definitions/string 143d8604b20SAlex Elder description: 144d8604b20SAlex Elder If present, name (or relative path) of the file within the 145d8604b20SAlex Elder firmware search path containing the firmware image used when 146d8604b20SAlex Elder initializing IPA hardware. Optional, and only used when 147d8604b20SAlex Elder Trust Zone performs early initialization. 148d8604b20SAlex Elder 149fc39c40aSAlex Elderrequired: 150fc39c40aSAlex Elder - compatible 1518456c544SAlex Elder - iommus 152fc39c40aSAlex Elder - reg 153fc39c40aSAlex Elder - clocks 154fc39c40aSAlex Elder - interrupts 155fc39c40aSAlex Elder - interconnects 156fc39c40aSAlex Elder - qcom,smem-states 157fc39c40aSAlex Elder 158*7a6ca44cSAlex Elder# If modem-init is not present, the AP loads GSI firmware, and 159*7a6ca44cSAlex Elder# memory-region must be specified 160*7a6ca44cSAlex Elderif: 161*7a6ca44cSAlex Elder not: 162*7a6ca44cSAlex Elder required: 163fc39c40aSAlex Elder - modem-init 164*7a6ca44cSAlex Elderthen: 165*7a6ca44cSAlex Elder required: 166fc39c40aSAlex Elder - memory-region 167fc39c40aSAlex Elder 1685be478f9SRob HerringadditionalProperties: false 1695be478f9SRob Herring 170fc39c40aSAlex Elderexamples: 171fc39c40aSAlex Elder - | 17227bb36edSAlex Elder #include <dt-bindings/interrupt-controller/arm-gic.h> 173e6e0f093SAlex Elder #include <dt-bindings/clock/qcom,rpmh.h> 174e6e0f093SAlex Elder #include <dt-bindings/interconnect/qcom,sdm845.h> 175e6e0f093SAlex Elder 176fc39c40aSAlex Elder smp2p-mpss { 177fc39c40aSAlex Elder compatible = "qcom,smp2p"; 178d49b3ae4SKrzysztof Kozlowski interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>; 179d49b3ae4SKrzysztof Kozlowski mboxes = <&apss_shared 6>; 180d49b3ae4SKrzysztof Kozlowski qcom,smem = <94>, <432>; 181d49b3ae4SKrzysztof Kozlowski qcom,local-pid = <0>; 182d49b3ae4SKrzysztof Kozlowski qcom,remote-pid = <5>; 183d49b3ae4SKrzysztof Kozlowski 184fc39c40aSAlex Elder ipa_smp2p_out: ipa-ap-to-modem { 185fc39c40aSAlex Elder qcom,entry-name = "ipa"; 186fc39c40aSAlex Elder #qcom,smem-state-cells = <1>; 187fc39c40aSAlex Elder }; 188fc39c40aSAlex Elder 189fc39c40aSAlex Elder ipa_smp2p_in: ipa-modem-to-ap { 190fc39c40aSAlex Elder qcom,entry-name = "ipa"; 191fc39c40aSAlex Elder interrupt-controller; 192fc39c40aSAlex Elder #interrupt-cells = <2>; 193fc39c40aSAlex Elder }; 194fc39c40aSAlex Elder }; 195d49b3ae4SKrzysztof Kozlowski 196fc39c40aSAlex Elder ipa@1e40000 { 197fc39c40aSAlex Elder compatible = "qcom,sdm845-ipa"; 198fc39c40aSAlex Elder 199fc39c40aSAlex Elder modem-init; 200fc39c40aSAlex Elder 2018456c544SAlex Elder iommus = <&apps_smmu 0x720 0x3>; 202fba56184SRob Herring reg = <0x1e40000 0x7000>, 203fba56184SRob Herring <0x1e47000 0x2000>, 204fba56184SRob Herring <0x1e04000 0x2c000>; 205fc39c40aSAlex Elder reg-names = "ipa-reg", 206e6e0f093SAlex Elder "ipa-shared", 207fc39c40aSAlex Elder "gsi"; 208fc39c40aSAlex Elder 20927bb36edSAlex Elder interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>, 21027bb36edSAlex Elder <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>, 211fc39c40aSAlex Elder <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 212fc39c40aSAlex Elder <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>; 213fc39c40aSAlex Elder interrupt-names = "ipa", 214fc39c40aSAlex Elder "gsi", 215fc39c40aSAlex Elder "ipa-clock-query", 216fc39c40aSAlex Elder "ipa-setup-ready"; 217fc39c40aSAlex Elder 218fc39c40aSAlex Elder clocks = <&rpmhcc RPMH_IPA_CLK>; 219fc39c40aSAlex Elder clock-names = "core"; 220fc39c40aSAlex Elder 221fc39c40aSAlex Elder interconnects = 222fc39c40aSAlex Elder <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_EBI1>, 223a0221a0fSAlex Elder <&rsc_hlos MASTER_IPA &rsc_hlos SLAVE_IMEM>, 224a0221a0fSAlex Elder <&rsc_hlos MASTER_APPSS_PROC &rsc_hlos SLAVE_IPA_CFG>; 225fc39c40aSAlex Elder interconnect-names = "memory", 226a0221a0fSAlex Elder "imem", 227a0221a0fSAlex Elder "config"; 228fc39c40aSAlex Elder 229ac62a017SAlex Elder qcom,qmp = <&aoss_qmp>; 230ac62a017SAlex Elder 231fc39c40aSAlex Elder qcom,smem-states = <&ipa_smp2p_out 0>, 232fc39c40aSAlex Elder <&ipa_smp2p_out 1>; 233fc39c40aSAlex Elder qcom,smem-state-names = "ipa-clock-enabled-valid", 234fc39c40aSAlex Elder "ipa-clock-enabled"; 235fc39c40aSAlex Elder }; 236