GNU Linux-libre 6.8.9-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)
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
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
91 patternProperties:
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
109 required:
110   - compatible
111   - qcom,domain
112
113 allOf:
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
145 additionalProperties: false
146
147 examples:
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     };