GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / soc / qcom / qcom,apr.yaml
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
7 title: Qualcomm APR/GPR (Asynchronous/Generic Packet Router) binding
8
9 maintainers:
10   - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11
12 description: |
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
17 properties:
18   compatible:
19     enum:
20       - qcom,apr-v2
21       - qcom,gpr
22
23   power-domains:
24     maxItems: 1
25
26   qcom,apr-domain:
27     $ref: /schemas/types.yaml#/definitions/uint32
28     enum: [1, 2, 3, 4, 5, 6, 7]
29     description:
30       Selects the processor domain for apr
31         1 = APR simulator
32         2 = PC Domain
33         3 = Modem Domain
34         4 = ADSP Domain
35         5 = Application processor Domain
36         6 = Modem2 Domain
37         7 = Application Processor2 Domain
38     deprecated: true
39
40   qcom,domain:
41     $ref: /schemas/types.yaml#/definitions/uint32
42     minimum: 1
43     maximum: 7
44     description:
45       Selects the processor domain for apr
46         1 = APR simulator
47         2 = PC Domain
48         3 = Modem Domain
49         4 = ADSP Domain
50         5 = Application processor Domain
51         6 = Modem2 Domain
52         7 = Application Processor2 Domain
53       Selects the processor domain for gpr
54         1 = Modem Domain
55         2 = Audio DSP Domain
56         3 = Application Processor Domain
57
58   qcom,glink-channels:
59     $ref: /schemas/types.yaml#/definitions/string-array
60     description: Channel name used for the communication
61     items:
62       - const: apr_audio_svc
63
64   qcom,intents:
65     $ref: /schemas/types.yaml#/definitions/uint32-array
66     description:
67       List of (size, amount) pairs describing what intents should be
68       preallocated for this virtual channel. This can be used to tweak the
69       default intents available for the channel to meet expectations of the
70       remote.
71
72   qcom,smd-channels:
73     $ref: /schemas/types.yaml#/definitions/string-array
74     description: Channel name used for the communication
75     items:
76       - const: apr_audio_svc
77
78   '#address-cells':
79     const: 1
80
81   '#size-cells':
82     const: 0
83
84 #APR/GPR Services
85 patternProperties:
86   "^service@[1-9a-d]$":
87     type: object
88     description:
89       APR/GPR node's client devices use subnodes for desired static port services.
90
91     properties:
92       compatible:
93         enum:
94           - qcom,q6core
95           - qcom,q6asm
96           - qcom,q6afe
97           - qcom,q6adm
98           - qcom,q6apm
99           - qcom,q6prm
100
101       reg:
102         minimum: 1
103         maximum: 13
104         description:
105           APR Service ID
106             3 = DSP Core Service
107             4 = Audio  Front End Service.
108             5 = Voice Stream Manager Service.
109             6 = Voice processing manager.
110             7 = Audio Stream Manager Service.
111             8 = Audio Device Manager Service.
112             9 = Multimode voice manager.
113             10 = Core voice stream.
114             11 = Core voice processor.
115             12 = Ultrasound stream manager.
116             13 = Listen stream manager.
117           GPR Service ID
118             1 = Audio Process Manager Service
119             2 = Proxy Resource Manager Service.
120             3 = AMDB Service.
121             4 = Voice processing manager.
122
123       clock-controller:
124         $ref: /schemas/sound/qcom,q6dsp-lpass-clocks.yaml#
125         description: Qualcomm DSP LPASS clock controller
126         unevaluatedProperties: false
127
128       dais:
129         type: object
130         oneOf:
131           - $ref: /schemas/sound/qcom,q6apm-dai.yaml#
132           - $ref: /schemas/sound/qcom,q6dsp-lpass-ports.yaml#
133           - $ref: /schemas/sound/qcom,q6asm-dais.yaml#
134         unevaluatedProperties: false
135         description: Qualcomm DSP audio ports
136
137       routing:
138         type: object
139         $ref: /schemas/sound/qcom,q6adm-routing.yaml#
140         unevaluatedProperties: false
141         description: Qualcomm DSP LPASS audio routing
142
143       qcom,protection-domain:
144         $ref: /schemas/types.yaml#/definitions/string-array
145         description: protection domain service name and path for apr service
146           possible values are
147           "avs/audio", "msm/adsp/audio_pd".
148           "kernel/elf_loader", "msm/modem/wlan_pd".
149           "tms/servreg", "msm/adsp/audio_pd".
150           "tms/servreg", "msm/modem/wlan_pd".
151           "tms/servreg", "msm/slpi/sensor_pd".
152
153     allOf:
154       - if:
155           properties:
156             compatible:
157               enum:
158                 - qcom,q6afe
159         then:
160           properties:
161             dais:
162               properties:
163                 compatible:
164                   const: qcom,q6afe-dais
165
166       - if:
167           properties:
168             compatible:
169               enum:
170                 - qcom,q6apm
171         then:
172           properties:
173             dais:
174               properties:
175                 compatible:
176                   enum:
177                     - qcom,q6apm-dais
178                     - qcom,q6apm-lpass-dais
179
180       - if:
181           properties:
182             compatible:
183               enum:
184                 - qcom,q6asm
185         then:
186           properties:
187             dais:
188               properties:
189                 compatible:
190                   const: qcom,q6asm-dais
191
192     additionalProperties: false
193
194 required:
195   - compatible
196   - qcom,domain
197
198 allOf:
199   - if:
200       properties:
201         compatible:
202           enum:
203             - qcom,gpr
204     then:
205       properties:
206         power-domains: false
207
208   - if:
209       required:
210         - qcom,glink-channels
211     then:
212       properties:
213         qcom,smd-channels: false
214
215   - if:
216       required:
217         - qcom,smd-channels
218     then:
219       properties:
220         qcom,glink-channels: false
221
222 additionalProperties: false
223
224 examples:
225   - |
226     #include <dt-bindings/soc/qcom,apr.h>
227     apr {
228         compatible = "qcom,apr-v2";
229         qcom,domain = <APR_DOMAIN_ADSP>;
230         #address-cells = <1>;
231         #size-cells = <0>;
232
233         q6core: service@3 {
234           compatible = "qcom,q6core";
235           reg = <APR_SVC_ADSP_CORE>;
236           qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
237         };
238
239         q6afe: service@4 {
240           compatible = "qcom,q6afe";
241           reg = <APR_SVC_AFE>;
242           qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
243         };
244
245         q6asm: service@7 {
246           compatible = "qcom,q6asm";
247           reg = <APR_SVC_ASM>;
248           qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
249         };
250
251         q6adm: service@8 {
252           compatible = "qcom,q6adm";
253           reg = <APR_SVC_ADM>;
254           qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
255         };
256     };
257
258   - |
259     #include <dt-bindings/soc/qcom,gpr.h>
260     gpr {
261         compatible = "qcom,gpr";
262         qcom,domain = <GPR_DOMAIN_ID_ADSP>;
263         #address-cells = <1>;
264         #size-cells = <0>;
265
266         service@1 {
267           compatible = "qcom,q6apm";
268           reg = <GPR_APM_MODULE_IID>;
269           qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
270         };
271     };