Linux 6.7-rc7
[linux-modified.git] / Documentation / devicetree / bindings / sound / qcom,lpass-cpu.yaml
1 # 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
7 title: Qualcomm Technologies Inc. LPASS CPU dai driver
8
9 maintainers:
10   - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11   - Rohit kumar <quic_rohkumar@quicinc.com>
12
13 description: |
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
19 properties:
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
80 patternProperties:
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
105 required:
106   - compatible
107   - reg
108   - reg-names
109   - clocks
110   - clock-names
111   - interrupts
112   - interrupt-names
113   - '#sound-dai-cells'
114
115 unevaluatedProperties: false
116
117 allOf:
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
244 examples:
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 ...