1 # SPDX-License-Identifier: GPL-2.0
4 $id: http://devicetree.org/schemas/sound/simple-card.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Simple Audio Card Driver Device Tree Bindings
10 - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
15 description: Indicates dai-link frame master.
16 $ref: /schemas/types.yaml#/definitions/phandle
19 description: Indicates dai-link bit clock master
20 $ref: /schemas/types.yaml#/definitions/phandle
23 description: dai-link uses frame clock inversion
24 $ref: /schemas/types.yaml#/definitions/flag
27 description: dai-link uses bit clock inversion
28 $ref: /schemas/types.yaml#/definitions/flag
31 description: see tdm-slot.txt.
32 $ref: /schemas/types.yaml#/definitions/uint32
35 description: see tdm-slot.txt.
36 $ref: /schemas/types.yaml#/definitions/uint32
38 system-clock-frequency:
40 If a clock is specified and a multiplication factor is given with
41 mclk-fs, the clock will be set to the calculated mclk frequency
42 when the stream starts.
43 $ref: /schemas/types.yaml#/definitions/uint32
45 system-clock-direction-out:
47 specifies clock direction as 'out' on initialization.
48 It is useful for some aCPUs with fixed clocks.
49 $ref: /schemas/types.yaml#/definitions/flag
53 Multiplication factor between stream rate and codec mclk.
54 When defined, mclk-fs property defined in dai-link sub nodes are ignored.
55 $ref: /schemas/types.yaml#/definitions/uint32
59 List of phandles pointing to auxiliary devices, such
60 as amplifiers, to be added to the sound card.
61 $ref: /schemas/types.yaml#/definitions/phandle-array
64 description: CPU to Codec rate convert.
65 $ref: /schemas/types.yaml#/definitions/uint32
68 description: CPU to Codec rate channels.
69 $ref: /schemas/types.yaml#/definitions/uint32
72 description: "device name prefix"
73 $ref: /schemas/types.yaml#/definitions/string
80 A list of the connections between audio components.
81 Each entry is a pair of strings, the first being the
82 connection's sink, the second being the connection's source.
83 $ref: /schemas/types.yaml#/definitions/non-unique-string-array
86 description: User specified audio sound widgets.
87 $ref: /schemas/types.yaml#/definitions/non-unique-string-array
90 description: the widget names for which pin switches must be created.
91 $ref: /schemas/types.yaml#/definitions/string-array
94 description: audio format.
115 $ref: "#/definitions/mclk-fs"
117 $ref: "#/definitions/prefix"
119 $ref: "#/definitions/frame-inversion"
121 $ref: "#/definitions/bitclock-inversion"
123 $ref: /schemas/types.yaml#/definitions/flag
125 $ref: /schemas/types.yaml#/definitions/flag
128 $ref: "#/definitions/dai-tdm-slot-num"
130 $ref: "#/definitions/dai-tdm-slot-width"
133 system-clock-frequency:
134 $ref: "#/definitions/system-clock-frequency"
135 system-clock-direction-out:
136 $ref: "#/definitions/system-clock-direction-out"
145 - simple-scu-audio-card
153 $ref: "#/definitions/label"
155 simple-audio-card,name:
156 description: User specified audio sound card name.
157 $ref: /schemas/types.yaml#/definitions/string
159 # use patternProperties to avoid naming "xxx,yyy" issue
161 "^simple-audio-card,widgets$":
162 $ref: "#/definitions/widgets"
163 "^simple-audio-card,routing$":
164 $ref: "#/definitions/routing"
165 "^simple-audio-card,cpu(@[0-9a-f]+)?":
166 $ref: "#/definitions/dai"
167 "^simple-audio-card,codec(@[0-9a-f]+)?":
168 $ref: "#/definitions/dai"
171 "^simple-audio-card,frame-master$":
172 $ref: "#/definitions/frame-master"
173 "^simple-audio-card,bitclock-master$":
174 $ref: "#/definitions/bitclock-master"
175 "^simple-audio-card,frame-inversion$":
176 $ref: "#/definitions/frame-inversion"
177 "^simple-audio-card,bitclock-inversion$":
178 $ref: "#/definitions/bitclock-inversion"
179 "^simple-audio-card,format$":
180 $ref: "#/definitions/format"
181 "^simple-audio-card,mclk-fs$":
182 $ref: "#/definitions/mclk-fs"
183 "^simple-audio-card,aux-devs$":
184 $ref: "#/definitions/aux-devs"
185 "^simple-audio-card,convert-rate$":
186 $ref: "#/definitions/convert-rate"
187 "^simple-audio-card,convert-channels$":
188 $ref: "#/definitions/convert-channels"
189 "^simple-audio-card,prefix$":
190 $ref: "#/definitions/prefix"
191 "^simple-audio-card,pin-switches$":
192 $ref: "#/definitions/pin-switches"
193 "^simple-audio-card,hp-det-gpio$":
195 "^simple-audio-card,mic-det-gpio$":
198 "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
200 Container for dai-link level properties and the CPU and CODEC sub-nodes.
201 This container may be omitted when the card has only one DAI link.
209 $ref: "#/definitions/frame-master"
211 $ref: "#/definitions/bitclock-master"
213 $ref: "#/definitions/frame-inversion"
215 $ref: "#/definitions/bitclock-inversion"
217 $ref: "#/definitions/format"
219 $ref: "#/definitions/mclk-fs"
221 $ref: "#/definitions/aux-devs"
223 $ref: "#/definitions/convert-rate"
225 $ref: "#/definitions/convert-channels"
227 $ref: "#/definitions/prefix"
229 $ref: "#/definitions/pin-switches"
237 $ref: "#/definitions/dai"
238 "^codec(@[0-9a-f]+)?":
239 $ref: "#/definitions/dai"
240 additionalProperties: false
245 additionalProperties: false
248 #--------------------
250 #--------------------
253 compatible = "simple-audio-card";
254 simple-audio-card,name = "VF610-Tower-Sound-Card";
255 simple-audio-card,format = "left_j";
256 simple-audio-card,bitclock-master = <&dailink0_master>;
257 simple-audio-card,frame-master = <&dailink0_master>;
258 simple-audio-card,widgets =
259 "Microphone", "Microphone Jack",
260 "Headphone", "Headphone Jack",
261 "Speaker", "External Speaker";
262 simple-audio-card,routing =
263 "MIC_IN", "Microphone Jack",
264 "Headphone Jack", "HP_OUT",
265 "External Speaker", "LINE_OUT";
267 simple-audio-card,cpu {
268 sound-dai = <&sh_fsi2 0>;
271 dailink0_master: simple-audio-card,codec {
272 sound-dai = <&ak4648>;
277 #--------------------
279 #--------------------
282 compatible = "simple-audio-card";
283 simple-audio-card,name = "Cubox Audio";
285 #address-cells = <1>;
288 simple-audio-card,dai-link@0 { /* I2S - HDMI */
292 sound-dai = <&audio0>;
295 sound-dai = <&tda998x0>;
299 simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */
302 sound-dai = <&audio1>;
305 sound-dai = <&tda998x1>;
309 simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */
312 sound-dai = <&audio2>;
315 sound-dai = <&spdif_codec>;
320 #--------------------
321 # route audio from IMX6 SSI2 through TLV320DAC3100 codec
322 # through TPA6130A2 amplifier to headphones:
323 #--------------------
326 compatible = "simple-audio-card";
328 simple-audio-card,widgets =
329 "Headphone", "Headphone Jack";
330 simple-audio-card,routing =
331 "Headphone Jack", "HPLEFT",
332 "Headphone Jack", "HPRIGHT",
335 simple-audio-card,aux-devs = <&>;
336 simple-audio-card,cpu {
339 simple-audio-card,codec {
340 sound-dai = <&codec>;
345 #--------------------
346 # Sampling Rate Conversion
347 #--------------------
350 compatible = "simple-audio-card";
352 simple-audio-card,name = "rsnd-ak4643";
353 simple-audio-card,format = "left_j";
354 simple-audio-card,bitclock-master = <&sndcodec>;
355 simple-audio-card,frame-master = <&sndcodec>;
357 simple-audio-card,convert-rate = <48000>;
359 simple-audio-card,prefix = "ak4642";
360 simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
361 "DAI0 Capture", "ak4642 Capture";
363 sndcpu: simple-audio-card,cpu {
364 sound-dai = <&rcar_sound>;
367 sndcodec: simple-audio-card,codec {
368 sound-dai = <&ak4643>;
369 system-clock-frequency = <11289600>;
373 #--------------------
374 # 2 CPU 1 Codec (Mixing)
375 #--------------------
378 compatible = "simple-audio-card";
379 #address-cells = <1>;
382 simple-audio-card,name = "rsnd-ak4643";
383 simple-audio-card,format = "left_j";
384 simple-audio-card,bitclock-master = <&dpcmcpu>;
385 simple-audio-card,frame-master = <&dpcmcpu>;
387 simple-audio-card,convert-rate = <48000>;
388 simple-audio-card,convert-channels = <2>;
390 simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
391 "ak4642 Playback", "DAI1 Playback";
393 dpcmcpu: simple-audio-card,cpu@0 {
395 sound-dai = <&rcar_sound 0>;
398 simple-audio-card,cpu@1 {
400 sound-dai = <&rcar_sound 1>;
403 simple-audio-card,codec {
405 sound-dai = <&ak4643>;
406 clocks = <&audio_clock>;
410 #--------------------
411 # Multi DAI links with DPCM:
414 # CPU1 ------ PCM3168A-p /* DPCM 1ch/2ch */
415 # CPU2 --/ /* DPCM 3ch/4ch */
416 # CPU3 --/ /* DPCM 5ch/6ch */
417 # CPU4 --/ /* DPCM 7ch/8ch */
418 # CPU5 ------ PCM3168A-c
419 #--------------------
422 compatible = "simple-audio-card";
423 #address-cells = <1>;
426 simple-audio-card,routing =
427 "pcm3168a Playback", "DAI1 Playback",
428 "pcm3168a Playback", "DAI2 Playback",
429 "pcm3168a Playback", "DAI3 Playback",
430 "pcm3168a Playback", "DAI4 Playback";
432 simple-audio-card,dai-link@0 {
435 bitclock-master = <&sndcpu0>;
436 frame-master = <&sndcpu0>;
439 sound-dai = <&rcar_sound 0>;
442 sound-dai = <&ak4613>;
446 simple-audio-card,dai-link@1 {
449 bitclock-master = <&sndcpu1>;
450 frame-master = <&sndcpu1>;
452 convert-channels = <8>; /* TDM Split */
455 sound-dai = <&rcar_sound 1>;
458 sound-dai = <&rcar_sound 2>;
461 sound-dai = <&rcar_sound 3>;
464 sound-dai = <&rcar_sound 4>;
469 dai-tdm-slot-num = <8>;
470 sound-dai = <&pcm3168a 0>;
474 simple-audio-card,dai-link@2 {
477 bitclock-master = <&sndcpu2>;
478 frame-master = <&sndcpu2>;
481 sound-dai = <&rcar_sound 5>;
486 sound-dai = <&pcm3168a 1>;