blob: 3a559bd07a79bb3e53b6d057ed2dfe0b92e4e53d [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/qcom,lpass-cpu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies Inc. LPASS CPU dai driver
8
9maintainers:
10 - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11 - Rohit kumar <quic_rohkumar@quicinc.com>
12
13description: |
14 Qualcomm Technologies Inc. SOC Low-Power Audio SubSystem (LPASS) that consist
15 of MI2S interface for audio data transfer on external codecs. LPASS cpu driver
16 is a module to configure Low-Power Audio Interface(LPAIF) core registers
17 across different IP versions.
18
19properties:
20 compatible:
21 enum:
22 - qcom,lpass-cpu
23 - qcom,apq8016-lpass-cpu
24 - qcom,sc7180-lpass-cpu
25 - qcom,sc7280-lpass-cpu
26
27 reg:
28 minItems: 1
29 maxItems: 6
30 description: LPAIF core registers
31
32 reg-names:
33 minItems: 1
34 maxItems: 6
35
36 clocks:
37 minItems: 3
38 maxItems: 10
39
40 clock-names:
41 minItems: 1
42 maxItems: 10
43
44 interrupts:
45 minItems: 1
46 maxItems: 4
47 description: LPAIF DMA buffer interrupt
48
49 interrupt-names:
50 minItems: 1
51 maxItems: 4
52
53 qcom,adsp:
54 $ref: /schemas/types.yaml#/definitions/phandle
55 description: Phandle for the audio DSP node
56
57 iommus:
58 minItems: 2
59 maxItems: 3
60 description: Phandle to apps_smmu node with sid mask
61
62 power-domains:
63 maxItems: 1
64
65 power-domain-names:
66 maxItems: 1
67
68 required-opps:
69 maxItems: 1
70
71 '#sound-dai-cells':
72 const: 1
73
74 '#address-cells':
75 const: 1
76
77 '#size-cells':
78 const: 0
79
80patternProperties:
81 "^dai-link@[0-9a-f]+$":
82 type: object
83 description: |
84 LPASS CPU dai node for each I2S device or Soundwire device. Bindings of each node
85 depends on the specific driver providing the functionality and
86 properties.
87 properties:
88 reg:
89 maxItems: 1
90 description: Must be one of the DAI ID
91
92 qcom,playback-sd-lines:
93 $ref: /schemas/types.yaml#/definitions/uint32-array
94 description: list of MI2S data lines for playback
95
96 qcom,capture-sd-lines:
97 $ref: /schemas/types.yaml#/definitions/uint32-array
98 description: list of MI2S data lines for capture
99
100 required:
101 - reg
102
103 additionalProperties: false
104
105required:
106 - compatible
107 - reg
108 - reg-names
109 - clocks
110 - clock-names
111 - interrupts
112 - interrupt-names
113 - '#sound-dai-cells'
114
115unevaluatedProperties: false
116
117allOf:
118 - $ref: dai-common.yaml#
119 - if:
120 properties:
121 compatible:
122 contains:
123 const: qcom,lpass-cpu
124
125 then:
126 properties:
127 clocks:
128 maxItems: 3
129 clock-names:
130 items:
131 - const: ahbix-clk
132 - const: mi2s-osr-clk
133 - const: mi2s-bit-clk
134
135 - if:
136 properties:
137 compatible:
138 contains:
139 const: qcom,apq8016-lpass-cpu
140
141 then:
142 properties:
143 clocks:
144 minItems: 7
145 maxItems: 7
146 clock-names:
147 items:
148 - const: ahbix-clk
149 - const: mi2s-bit-clk0
150 - const: mi2s-bit-clk1
151 - const: mi2s-bit-clk2
152 - const: mi2s-bit-clk3
153 - const: pcnoc-mport-clk
154 - const: pcnoc-sway-clk
155
156 - if:
157 properties:
158 compatible:
159 contains:
160 const: qcom,sc7180-lpass-cpu
161
162 then:
163 properties:
164 clocks:
165 minItems: 6
166 maxItems: 6
167 clock-names:
168 items:
169 - const: pcnoc-sway-clk
170 - const: audio-core
171 - const: mclk0
172 - const: pcnoc-mport-clk
173 - const: mi2s-bit-clk0
174 - const: mi2s-bit-clk1
175 reg:
176 minItems: 2
177 maxItems: 2
178 reg-names:
179 items:
180 - const: lpass-hdmiif
181 - const: lpass-lpaif
182 interrupts:
183 minItems: 2
184 maxItems: 2
185 interrupt-names:
186 items:
187 - const: lpass-irq-lpaif
188 - const: lpass-irq-hdmi
189 required:
190 - iommus
191 - power-domains
192
193 - if:
194 properties:
195 compatible:
196 contains:
197 const: qcom,sc7280-lpass-cpu
198
199 then:
200 properties:
201 clocks:
202 minItems: 10
203 maxItems: 10
204 clock-names:
205 items:
206 - const: aon_cc_audio_hm_h
207 - const: audio_cc_ext_mclk0
208 - const: core_cc_sysnoc_mport_core
209 - const: core_cc_ext_if0_ibit
210 - const: core_cc_ext_if1_ibit
211 - const: audio_cc_codec_mem
212 - const: audio_cc_codec_mem0
213 - const: audio_cc_codec_mem1
214 - const: audio_cc_codec_mem2
215 - const: aon_cc_va_mem0
216 reg:
217 minItems: 6
218 maxItems: 6
219 reg-names:
220 items:
221 - const: lpass-hdmiif
222 - const: lpass-lpaif
223 - const: lpass-rxtx-cdc-dma-lpm
224 - const: lpass-rxtx-lpaif
225 - const: lpass-va-lpaif
226 - const: lpass-va-cdc-dma-lpm
227 interrupts:
228 minItems: 4
229 maxItems: 4
230 interrupt-names:
231 items:
232 - const: lpass-irq-lpaif
233 - const: lpass-irq-hdmi
234 - const: lpass-irq-vaif
235 - const: lpass-irq-rxtxif
236 power-domain-names:
237 items:
238 - const: lcx
239
240 required:
241 - iommus
242 - power-domains
243
244examples:
245 - |
246 #include <dt-bindings/sound/sc7180-lpass.h>
247
248 soc {
249 #address-cells = <2>;
250 #size-cells = <2>;
251 lpass@62d80000 {
252 compatible = "qcom,sc7180-lpass-cpu";
253
254 reg = <0 0x62d87000 0 0x68000>,
255 <0 0x62f00000 0 0x29000>;
256 reg-names = "lpass-hdmiif",
257 "lpass-lpaif";
258 iommus = <&apps_smmu 0x1020 0>,
259 <&apps_smmu 0x1032 0>;
260 power-domains = <&lpass_hm 0>;
261
262 clocks = <&gcc 131>,
263 <&lpasscorecc 6>,
264 <&lpasscorecc 7>,
265 <&lpasscorecc 10>,
266 <&lpasscorecc 8>,
267 <&lpasscorecc 9>;
268
269 clock-names = "pcnoc-sway-clk", "audio-core",
270 "mclk0", "pcnoc-mport-clk",
271 "mi2s-bit-clk0", "mi2s-bit-clk1";
272
273 interrupts = <0 160 1>,
274 <0 268 1>;
275 interrupt-names = "lpass-irq-lpaif",
276 "lpass-irq-hdmi";
277 #sound-dai-cells = <1>;
278
279 #address-cells = <1>;
280 #size-cells = <0>;
281 /* Optional to set different MI2S SD lines */
282 dai-link@0 {
283 reg = <MI2S_PRIMARY>;
284 qcom,playback-sd-lines = <1>;
285 qcom,capture-sd-lines = <0>;
286 };
287 };
288 };
289
290...