Merge tag 'riscv-for-linus-5.19-rc8' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.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 bindings
8
9 maintainers:
10   - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11   - Rohit kumar <rohitkr@codeaurora.org>
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: 7
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   '#sound-dai-cells':
69     const: 1
70
71   '#address-cells':
72     const: 1
73
74   '#size-cells':
75     const: 0
76
77 patternProperties:
78   "^dai-link@[0-9a-f]$":
79     type: object
80     description: |
81       LPASS CPU dai node for each I2S device or Soundwire device. Bindings of each node
82       depends on the specific driver providing the functionality and
83       properties.
84     properties:
85       reg:
86         maxItems: 1
87         description: Must be one of the DAI ID
88
89       qcom,playback-sd-lines:
90         $ref: /schemas/types.yaml#/definitions/uint32-array
91         description: list of MI2S data lines for playback
92
93       qcom,capture-sd-lines:
94         $ref: /schemas/types.yaml#/definitions/uint32-array
95         description: list of MI2S data lines for capture
96
97     required:
98       - reg
99
100     additionalProperties: false
101
102 required:
103   - compatible
104   - reg
105   - reg-names
106   - clocks
107   - clock-names
108   - interrupts
109   - interrupt-names
110   - '#sound-dai-cells'
111
112 additionalProperties: false
113
114 allOf:
115   - if:
116       properties:
117         compatible:
118           contains:
119             const: qcom,lpass-cpu
120
121     then:
122       properties:
123         clock-names:
124           items:
125             - const: ahbix-clk
126             - const: mi2s-osr-clk
127             - const: mi2s-bit-clk
128
129   - if:
130       properties:
131         compatible:
132           contains:
133             const: qcom,apq8016-lpass-cpu
134
135     then:
136       properties:
137         clock-names:
138           items:
139             - const: ahbix-clk
140             - const: mi2s-bit-clk0
141             - const: mi2s-bit-clk1
142             - const: mi2s-bit-clk2
143             - const: mi2s-bit-clk3
144             - const: pcnoc-mport-clk
145             - const: pcnoc-sway-clk
146
147   - if:
148       properties:
149         compatible:
150           contains:
151             const: qcom,sc7180-lpass-cpu
152
153     then:
154       properties:
155         clock-names:
156           oneOf:
157             - items:   #for I2S
158                 - const: pcnoc-sway-clk
159                 - const: audio-core
160                 - const: mclk0
161                 - const: pcnoc-mport-clk
162                 - const: mi2s-bit-clk0
163                 - const: mi2s-bit-clk1
164             - items:   #for HDMI
165                 - const: pcnoc-sway-clk
166                 - const: audio-core
167                 - const: pcnoc-mport-clk
168         reg-names:
169           anyOf:
170             - items:   #for I2S
171                 - const: lpass-lpaif
172             - items:   #for I2S and HDMI
173                 - const: lpass-hdmiif
174                 - const: lpass-lpaif
175         interrupt-names:
176           anyOf:
177             - items:   #for I2S
178                 - const: lpass-irq-lpaif
179             - items:   #for I2S and HDMI
180                 - const: lpass-irq-lpaif
181                 - const: lpass-irq-hdmi
182       required:
183         - iommus
184         - power-domains
185
186   - if:
187       properties:
188         compatible:
189           contains:
190             const: qcom,sc7280-lpass-cpu
191
192     then:
193       properties:
194         clock-names:
195           oneOf:
196             - items:   #for I2S
197                 - const: aon_cc_audio_hm_h
198                 - const: audio_cc_ext_mclk0
199                 - const: core_cc_sysnoc_mport_core
200                 - const: core_cc_ext_if0_ibit
201                 - const: core_cc_ext_if1_ibit
202             - items:   #for Soundwire
203                 - const: aon_cc_audio_hm_h
204                 - const: audio_cc_codec_mem
205                 - const: audio_cc_codec_mem0
206                 - const: audio_cc_codec_mem1
207                 - const: audio_cc_codec_mem2
208                 - const: aon_cc_va_mem0
209             - items:   #for HDMI
210                 - const: core_cc_sysnoc_mport_core
211
212         reg-names:
213           anyOf:
214             - items:   #for I2S
215                 - const: lpass-lpaif
216             - items:   #for I2S and HDMI
217                 - const: lpass-hdmiif
218                 - const: lpass-lpaif
219             - items:   #for I2S, soundwire and HDMI
220                 - const: lpass-hdmiif
221                 - const: lpass-lpaif
222                 - const: lpass-rxtx-cdc-dma-lpm
223                 - const: lpass-rxtx-lpaif
224                 - const: lpass-va-lpaif
225                 - const: lpass-va-cdc-dma-lpm
226         interrupt-names:
227           anyOf:
228             - items:   #for I2S
229                 - const: lpass-irq-lpaif
230             - items:   #for I2S and HDMI
231                 - const: lpass-irq-lpaif
232                 - const: lpass-irq-hdmi
233             - items:   #for I2S, soundwire and HDMI
234                 - const: lpass-irq-lpaif
235                 - const: lpass-irq-hdmi
236                 - const: lpass-irq-vaif
237                 - const: lpass-irq-rxtxif
238         power-domain-names:
239           allOf:
240             - items:
241                 - const: lcx
242
243       required:
244         - iommus
245         - power-domains
246
247 examples:
248   - |
249     #include <dt-bindings/sound/sc7180-lpass.h>
250
251     soc {
252         #address-cells = <2>;
253         #size-cells = <2>;
254         lpass@62d80000 {
255             compatible = "qcom,sc7180-lpass-cpu";
256
257             reg = <0 0x62d87000 0 0x68000>,
258                   <0 0x62f00000 0 0x29000>;
259             reg-names = "lpass-hdmiif",
260                         "lpass-lpaif";
261             iommus = <&apps_smmu 0x1020 0>,
262                      <&apps_smmu 0x1032 0>;
263             power-domains = <&lpass_hm 0>;
264
265             clocks = <&gcc 131>,
266                  <&lpasscorecc 6>,
267                  <&lpasscorecc 7>,
268                  <&lpasscorecc 10>,
269                  <&lpasscorecc 8>,
270                  <&lpasscorecc 9>;
271
272             clock-names = "pcnoc-sway-clk", "audio-core",
273                           "mclk0", "pcnoc-mport-clk",
274                           "mi2s-bit-clk0", "mi2s-bit-clk1";
275
276             interrupts = <0 160 1>,
277                          <0 268 1>;
278             interrupt-names = "lpass-irq-lpaif",
279                               "lpass-irq-hdmi";
280             #sound-dai-cells = <1>;
281
282             #address-cells = <1>;
283             #size-cells = <0>;
284             /* Optional to set different MI2S SD lines */
285             dai-link@0 {
286                 reg = <MI2S_PRIMARY>;
287                 qcom,playback-sd-lines = <1>;
288                 qcom,capture-sd-lines = <0>;
289             };
290         };
291     };
292
293 ...