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,sm8250.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies Inc. ASoC sound card drivers
8
9maintainers:
10  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11
12description:
13  This bindings describes Qualcomm SoC based sound cards
14  which uses LPASS internal codec for audio.
15
16properties:
17  compatible:
18    enum:
19      - qcom,apq8016-sbc-sndcard
20      - qcom,msm8916-qdsp6-sndcard
21      - qcom,sm8250-sndcard
22      - qcom,qrb5165-rb5-sndcard
23
24  audio-routing:
25    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
26    description:
27      A list of the connections between audio components. Each entry is a
28      pair of strings, the first being the connection's sink, the second
29      being the connection's source. Valid names could be power supplies,
30      MicBias of codec and the jacks on the board.
31
32  aux-devs:
33    $ref: /schemas/types.yaml#/definitions/phandle-array
34    description: |
35      List of phandles pointing to auxiliary devices, such
36      as amplifiers, to be added to the sound card.
37
38  model:
39    $ref: /schemas/types.yaml#/definitions/string
40    description: User visible long sound card name
41
42  pin-switches:
43    description: List of widget names for which pin switches should be created.
44    $ref: /schemas/types.yaml#/definitions/string-array
45
46  widgets:
47    description: User specified audio sound widgets.
48    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
49
50  # Only valid for some compatibles (see allOf if below)
51  reg: true
52  reg-names: true
53
54patternProperties:
55  ".*-dai-link$":
56    description:
57      Each subnode represents a dai link. Subnodes of each dai links would be
58      cpu/codec dais.
59
60    type: object
61
62    properties:
63      link-name:
64        description: Indicates dai-link name and PCM stream name.
65        $ref: /schemas/types.yaml#/definitions/string
66        maxItems: 1
67
68      cpu:
69        description: Holds subnode which indicates cpu dai.
70        type: object
71        properties:
72          sound-dai:
73            maxItems: 1
74
75      platform:
76        description: Holds subnode which indicates platform dai.
77        type: object
78        properties:
79          sound-dai:
80            maxItems: 1
81
82      codec:
83        description: Holds subnode which indicates codec dai.
84        type: object
85        properties:
86          sound-dai:
87            minItems: 1
88            maxItems: 4
89
90    required:
91      - link-name
92      - cpu
93
94    additionalProperties: false
95
96required:
97  - compatible
98  - model
99
100allOf:
101  - if:
102      properties:
103        compatible:
104          contains:
105            enum:
106              - qcom,apq8016-sbc-sndcard
107              - qcom,msm8916-qdsp6-sndcard
108    then:
109      properties:
110        reg:
111          items:
112            - description: Microphone I/O mux register address
113            - description: Speaker I/O mux register address
114        reg-names:
115          items:
116            - const: mic-iomux
117            - const: spkr-iomux
118      required:
119        - compatible
120        - model
121        - reg
122        - reg-names
123    else:
124      properties:
125        reg: false
126        reg-names: false
127
128additionalProperties: false
129
130examples:
131
132  - |
133    #include <dt-bindings/sound/qcom,q6afe.h>
134    #include <dt-bindings/sound/qcom,q6asm.h>
135    sound {
136        compatible = "qcom,qrb5165-rb5-sndcard";
137        model = "Qualcomm-qrb5165-RB5-WSA8815-Speakers-DMIC0";
138        audio-routing = "SpkrLeft IN", "WSA_SPK1 OUT",
139                    "SpkrRight IN", "WSA_SPK2 OUT",
140                    "VA DMIC0", "vdd-micb",
141                    "VA DMIC1", "vdd-micb";
142
143        mm1-dai-link {
144            link-name = "MultiMedia0";
145            cpu {
146                sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA1>;
147            };
148        };
149
150        mm2-dai-link {
151            link-name = "MultiMedia2";
152            cpu {
153                sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA2>;
154            };
155        };
156
157        mm3-dai-link {
158            link-name = "MultiMedia3";
159            cpu {
160                sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA3>;
161            };
162        };
163
164        hdmi-dai-link {
165            link-name = "HDMI Playback";
166            cpu {
167                sound-dai = <&q6afedai TERTIARY_MI2S_RX>;
168            };
169
170            platform {
171                sound-dai = <&q6routing>;
172            };
173
174            codec {
175                sound-dai = <&lt9611_codec 0>;
176            };
177        };
178
179        wsa-dai-link {
180            link-name = "WSA Playback";
181            cpu {
182                sound-dai = <&q6afedai WSA_CODEC_DMA_RX_0>;
183            };
184
185            platform {
186                sound-dai = <&q6routing>;
187            };
188
189            codec {
190                sound-dai = <&left_spkr>, <&right_spkr>, <&swr0 0>, <&wsamacro>;
191            };
192        };
193
194        va-dai-link {
195            link-name = "VA Capture";
196            cpu {
197                sound-dai = <&q6afedai VA_CODEC_DMA_TX_0>;
198            };
199
200            platform {
201                sound-dai = <&q6routing>;
202            };
203
204            codec {
205                sound-dai = <&vamacro 0>;
206            };
207        };
208    };
209
210  - |
211    #include <dt-bindings/sound/qcom,lpass.h>
212    sound@7702000 {
213        compatible = "qcom,apq8016-sbc-sndcard";
214        reg = <0x07702000 0x4>, <0x07702004 0x4>;
215        reg-names = "mic-iomux", "spkr-iomux";
216
217        model = "DB410c";
218        audio-routing =
219            "AMIC2", "MIC BIAS Internal2",
220            "AMIC3", "MIC BIAS External1";
221
222        pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
223        pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
224        pinctrl-names = "default", "sleep";
225
226        quaternary-dai-link {
227            link-name = "ADV7533";
228            cpu {
229                sound-dai = <&lpass MI2S_QUATERNARY>;
230            };
231            codec {
232                sound-dai = <&adv_bridge 0>;
233            };
234        };
235
236        primary-dai-link {
237            link-name = "WCD";
238            cpu {
239                sound-dai = <&lpass MI2S_PRIMARY>;
240            };
241            codec {
242                sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
243            };
244        };
245
246        tertiary-dai-link {
247            link-name = "WCD-Capture";
248            cpu {
249                sound-dai = <&lpass MI2S_TERTIARY>;
250            };
251            codec {
252                sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
253            };
254        };
255    };
256
257  - |
258    #include <dt-bindings/sound/qcom,q6afe.h>
259    #include <dt-bindings/sound/qcom,q6asm.h>
260    sound@7702000 {
261        compatible = "qcom,msm8916-qdsp6-sndcard";
262        reg = <0x07702000 0x4>, <0x07702004 0x4>;
263        reg-names = "mic-iomux", "spkr-iomux";
264
265        model = "msm8916";
266        widgets =
267            "Speaker", "Speaker",
268            "Headphone", "Headphones";
269        pin-switches = "Speaker";
270        audio-routing =
271            "Speaker", "Speaker Amp OUT",
272            "Speaker Amp IN", "HPH_R",
273            "Headphones", "HPH_L",
274            "Headphones", "HPH_R",
275            "AMIC1", "MIC BIAS Internal1",
276            "AMIC2", "MIC BIAS Internal2",
277            "AMIC3", "MIC BIAS Internal3";
278        aux-devs = <&speaker_amp>;
279
280        pinctrl-names = "default", "sleep";
281        pinctrl-0 = <&cdc_pdm_lines_act>;
282        pinctrl-1 = <&cdc_pdm_lines_sus>;
283
284        mm1-dai-link {
285            link-name = "MultiMedia1";
286            cpu {
287                sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
288            };
289        };
290
291        primary-dai-link {
292            link-name = "Primary MI2S";
293            cpu {
294                sound-dai = <&q6afedai PRIMARY_MI2S_RX>;
295            };
296            platform {
297                sound-dai = <&q6routing>;
298            };
299            codec {
300                sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
301            };
302        };
303    };
304