1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: "http://devicetree.org/schemas/soc/qcom/qcom,apr.yaml#" 5$schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 7title: Qualcomm APR/GPR (Asynchronous/Generic Packet Router) 8 9maintainers: 10 - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> 11 12description: | 13 This binding describes the Qualcomm APR/GPR, APR/GPR is a IPC protocol for 14 communication between Application processor and QDSP. APR/GPR is mainly 15 used for audio/voice services on the QDSP. 16 17properties: 18 compatible: 19 enum: 20 - qcom,apr 21 - qcom,apr-v2 22 - qcom,gpr 23 24 power-domains: 25 maxItems: 1 26 27 qcom,apr-domain: 28 $ref: /schemas/types.yaml#/definitions/uint32 29 enum: [1, 2, 3, 4, 5, 6, 7] 30 description: 31 Selects the processor domain for apr 32 1 = APR simulator 33 2 = PC Domain 34 3 = Modem Domain 35 4 = ADSP Domain 36 5 = Application processor Domain 37 6 = Modem2 Domain 38 7 = Application Processor2 Domain 39 deprecated: true 40 41 qcom,domain: 42 $ref: /schemas/types.yaml#/definitions/uint32 43 minimum: 1 44 maximum: 7 45 description: 46 Selects the processor domain for apr 47 1 = APR simulator 48 2 = PC Domain 49 3 = Modem Domain 50 4 = ADSP Domain 51 5 = Application processor Domain 52 6 = Modem2 Domain 53 7 = Application Processor2 Domain 54 Selects the processor domain for gpr 55 1 = Modem Domain 56 2 = Audio DSP Domain 57 3 = Application Processor Domain 58 59 qcom,glink-channels: 60 $ref: /schemas/types.yaml#/definitions/string-array 61 description: Channel name used for the communication 62 maxItems: 1 63 64 qcom,intents: 65 $ref: /schemas/types.yaml#/definitions/uint32-matrix 66 minItems: 1 67 maxItems: 32 68 items: 69 items: 70 - description: size of each intent to preallocate 71 - description: amount of intents to preallocate 72 minimum: 1 73 description: 74 List of (size, amount) pairs describing what intents should be 75 preallocated for this virtual channel. This can be used to tweak the 76 default intents available for the channel to meet expectations of the 77 remote. 78 79 qcom,smd-channels: 80 $ref: /schemas/types.yaml#/definitions/string-array 81 description: Channel name used for the communication 82 items: 83 - const: apr_audio_svc 84 85 '#address-cells': 86 const: 1 87 88 '#size-cells': 89 const: 0 90 91patternProperties: 92 "^service@[1-9a-d]$": 93 type: object 94 $ref: /schemas/soc/qcom/qcom,apr-services.yaml 95 additionalProperties: true 96 description: 97 APR/GPR static port services. 98 99 properties: 100 compatible: 101 enum: 102 - qcom,q6core 103 - qcom,q6asm 104 - qcom,q6afe 105 - qcom,q6adm 106 - qcom,q6apm 107 - qcom,q6prm 108 109required: 110 - compatible 111 - qcom,domain 112 113allOf: 114 - if: 115 properties: 116 compatible: 117 enum: 118 - qcom,gpr 119 then: 120 properties: 121 qcom,glink-channels: 122 items: 123 - const: adsp_apps 124 power-domains: false 125 else: 126 properties: 127 qcom,glink-channels: 128 items: 129 - const: apr_audio_svc 130 131 - if: 132 required: 133 - qcom,glink-channels 134 then: 135 properties: 136 qcom,smd-channels: false 137 138 - if: 139 required: 140 - qcom,smd-channels 141 then: 142 properties: 143 qcom,glink-channels: false 144 145additionalProperties: false 146 147examples: 148 - | 149 #include <dt-bindings/soc/qcom,apr.h> 150 apr { 151 compatible = "qcom,apr-v2"; 152 qcom,domain = <APR_DOMAIN_ADSP>; 153 qcom,glink-channels = "apr_audio_svc"; 154 qcom,intents = <512 20>; 155 #address-cells = <1>; 156 #size-cells = <0>; 157 158 q6core: service@3 { 159 compatible = "qcom,q6core"; 160 reg = <APR_SVC_ADSP_CORE>; 161 qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd"; 162 }; 163 164 service@4 { 165 compatible = "qcom,q6afe"; 166 reg = <APR_SVC_AFE>; 167 qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd"; 168 169 clock-controller { 170 compatible = "qcom,q6afe-clocks"; 171 #clock-cells = <2>; 172 }; 173 174 dais { 175 compatible = "qcom,q6afe-dais"; 176 #address-cells = <1>; 177 #size-cells = <0>; 178 #sound-dai-cells = <1>; 179 /* ... */ 180 }; 181 /* ... */ 182 }; 183 }; 184 185 - | 186 #include <dt-bindings/soc/qcom,gpr.h> 187 gpr { 188 compatible = "qcom,gpr"; 189 qcom,domain = <GPR_DOMAIN_ID_ADSP>; 190 qcom,glink-channels = "adsp_apps"; 191 qcom,intents = <512 20>; 192 #address-cells = <1>; 193 #size-cells = <0>; 194 195 service@1 { 196 compatible = "qcom,q6apm"; 197 reg = <GPR_APM_MODULE_IID>; 198 #sound-dai-cells = <0>; 199 qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd"; 200 201 dais { 202 compatible = "qcom,q6apm-dais"; 203 iommus = <&apps_smmu 0x1801 0x0>; 204 }; 205 206 bedais { 207 compatible = "qcom,q6apm-lpass-dais"; 208 #sound-dai-cells = <1>; 209 }; 210 }; 211 }; 212