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