~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/sound/simple-card.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: GPL-2.0
  2 %YAML 1.2
  3 ---
  4 $id: http://devicetree.org/schemas/sound/simple-card.yaml#
  5 $schema: http://devicetree.org/meta-schemas/core.yaml#
  6 
  7 title: Simple Audio Card Driver
  8 
  9 maintainers:
 10   - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 11 
 12 definitions:
 13 
 14   frame-master:
 15     description: Indicates dai-link frame master.
 16     $ref: /schemas/types.yaml#/definitions/phandle
 17 
 18   bitclock-master:
 19     description: Indicates dai-link bit clock master
 20     $ref: /schemas/types.yaml#/definitions/phandle
 21 
 22   frame-inversion:
 23     description: dai-link uses frame clock inversion
 24     $ref: /schemas/types.yaml#/definitions/flag
 25 
 26   bitclock-inversion:
 27     description: dai-link uses bit clock inversion
 28     $ref: /schemas/types.yaml#/definitions/flag
 29 
 30   dai-tdm-slot-num:
 31     description: see tdm-slot.txt.
 32     $ref: /schemas/types.yaml#/definitions/uint32
 33 
 34   dai-tdm-slot-width:
 35     description: see tdm-slot.txt.
 36     $ref: /schemas/types.yaml#/definitions/uint32
 37 
 38   system-clock-frequency:
 39     description: |
 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
 44 
 45   system-clock-direction-out:
 46     description: |
 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
 50 
 51   system-clock-fixed:
 52     description: |
 53       Specifies that the clock frequency should not be modified.
 54       Implied when system-clock-frequency is specified, but can be used when
 55       a clock is mapped to the device whose frequency cannot or should not be
 56       changed. When mclk-fs is also specified, this restricts the device to a
 57       single fixed sampling rate.
 58     $ref: /schemas/types.yaml#/definitions/flag
 59 
 60   mclk-fs:
 61     description: |
 62       Multiplication factor between stream rate and codec mclk.
 63       When defined, mclk-fs property defined in dai-link sub nodes are ignored.
 64     $ref: /schemas/types.yaml#/definitions/uint32
 65 
 66   aux-devs:
 67     description: |
 68       List of phandles pointing to auxiliary devices, such
 69       as amplifiers, to be added to the sound card.
 70     $ref: /schemas/types.yaml#/definitions/phandle-array
 71 
 72   convert-rate:
 73     description: CPU to Codec rate convert.
 74     $ref: /schemas/types.yaml#/definitions/uint32
 75 
 76   convert-channels:
 77     description: CPU to Codec rate channels.
 78     $ref: /schemas/types.yaml#/definitions/uint32
 79 
 80   prefix:
 81     description: device name prefix
 82     $ref: /schemas/types.yaml#/definitions/string
 83 
 84   label:
 85     maxItems: 1
 86 
 87   routing:
 88     description: |
 89       A list of the connections between audio components.
 90       Each entry is a pair of strings, the first being the
 91       connection's sink, the second being the connection's source.
 92     $ref: /schemas/types.yaml#/definitions/non-unique-string-array
 93 
 94   widgets:
 95     description: User specified audio sound widgets.
 96     $ref: /schemas/types.yaml#/definitions/non-unique-string-array
 97 
 98   pin-switches:
 99     description: the widget names for which pin switches must be created.
100     $ref: /schemas/types.yaml#/definitions/string-array
101 
102   format:
103     description: audio format.
104     items:
105       enum:
106         - i2s
107         - right_j
108         - left_j
109         - dsp_a
110         - dsp_b
111         - ac97
112         - pdm
113         - msb
114         - lsb
115 
116   dai:
117     type: object
118     properties:
119       sound-dai:
120         maxItems: 1
121 
122       # common properties
123       mclk-fs:
124         $ref: "#/definitions/mclk-fs"
125       prefix:
126         $ref: "#/definitions/prefix"
127       frame-inversion:
128         $ref: "#/definitions/frame-inversion"
129       bitclock-inversion:
130         $ref: "#/definitions/bitclock-inversion"
131       frame-master:
132         $ref: /schemas/types.yaml#/definitions/flag
133       bitclock-master:
134         $ref: /schemas/types.yaml#/definitions/flag
135 
136       dai-tdm-slot-num:
137         $ref: "#/definitions/dai-tdm-slot-num"
138       dai-tdm-slot-width:
139         $ref: "#/definitions/dai-tdm-slot-width"
140       clocks:
141         maxItems: 1
142       system-clock-frequency:
143         $ref: "#/definitions/system-clock-frequency"
144       system-clock-direction-out:
145         $ref: "#/definitions/system-clock-direction-out"
146       system-clock-fixed:
147         $ref: "#/definitions/system-clock-fixed"
148     required:
149       - sound-dai
150 
151   additional-devs:
152     type: object
153     description:
154       Additional devices used by the simple audio card.
155     patternProperties:
156       '^iio-aux(-.+)?$':
157         type: object
158         $ref: audio-iio-aux.yaml#
159 
160 properties:
161   compatible:
162     contains:
163       enum:
164         - simple-audio-card
165         - simple-scu-audio-card
166 
167   "#address-cells":
168     const: 1
169   "#size-cells":
170     const: 0
171 
172   label:
173     $ref: "#/definitions/label"
174 
175   simple-audio-card,name:
176     description: User specified audio sound card name.
177     $ref: /schemas/types.yaml#/definitions/string
178 
179   simple-audio-card,widgets:
180     $ref: "#/definitions/widgets"
181   simple-audio-card,routing:
182     $ref: "#/definitions/routing"
183 
184   # common properties
185   simple-audio-card,frame-master:
186     $ref: "#/definitions/frame-master"
187   simple-audio-card,bitclock-master:
188     $ref: "#/definitions/bitclock-master"
189   simple-audio-card,frame-inversion:
190     $ref: "#/definitions/frame-inversion"
191   simple-audio-card,bitclock-inversion:
192     $ref: "#/definitions/bitclock-inversion"
193   simple-audio-card,format:
194     $ref: "#/definitions/format"
195   simple-audio-card,mclk-fs:
196     $ref: "#/definitions/mclk-fs"
197   simple-audio-card,aux-devs:
198     $ref: "#/definitions/aux-devs"
199   simple-audio-card,additional-devs:
200     $ref: "#/definitions/additional-devs"
201   simple-audio-card,convert-rate:
202     $ref: "#/definitions/convert-rate"
203   simple-audio-card,convert-channels:
204     $ref: "#/definitions/convert-channels"
205   simple-audio-card,prefix:
206     $ref: "#/definitions/prefix"
207   simple-audio-card,pin-switches:
208     $ref: "#/definitions/pin-switches"
209   simple-audio-card,hp-det-gpio:
210     maxItems: 1
211   simple-audio-card,mic-det-gpio:
212     maxItems: 1
213 
214 patternProperties:
215   "^simple-audio-card,cpu(@[0-9a-f]+)?$":
216     $ref: "#/definitions/dai"
217   "^simple-audio-card,codec(@[0-9a-f]+)?$":
218     $ref: "#/definitions/dai"
219   "^simple-audio-card,plat(@[0-9a-f]+)?$":
220     $ref: "#/definitions/dai"
221 
222   "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
223     description: |
224       Container for dai-link level properties and the CPU and CODEC sub-nodes.
225       This container may be omitted when the card has only one DAI link.
226     type: object
227     properties:
228       reg:
229         maxItems: 1
230 
231       "#address-cells":
232         const: 1
233       "#size-cells":
234         const: 0
235       # common properties
236       frame-master:
237         $ref: "#/definitions/frame-master"
238       bitclock-master:
239         $ref: "#/definitions/bitclock-master"
240       frame-inversion:
241         $ref: "#/definitions/frame-inversion"
242       bitclock-inversion:
243         $ref: "#/definitions/bitclock-inversion"
244       format:
245         $ref: "#/definitions/format"
246       mclk-fs:
247         $ref: "#/definitions/mclk-fs"
248       aux-devs:
249         $ref: "#/definitions/aux-devs"
250       convert-rate:
251         $ref: "#/definitions/convert-rate"
252       convert-channels:
253         $ref: "#/definitions/convert-channels"
254       prefix:
255         $ref: "#/definitions/prefix"
256       pin-switches:
257         $ref: "#/definitions/pin-switches"
258       hp-det-gpio:
259         maxItems: 1
260       mic-det-gpio:
261         maxItems: 1
262 
263     patternProperties:
264       "^cpu(-[0-9]+)?$":
265         $ref: "#/definitions/dai"
266       "^codec(-[0-9]+)?$":
267         $ref: "#/definitions/dai"
268     additionalProperties: false
269 
270 required:
271   - compatible
272 
273 additionalProperties: false
274 
275 examples:
276 # --------------------
277 # single DAI link
278 # --------------------
279   - |
280     sound {
281         compatible = "simple-audio-card";
282         simple-audio-card,name = "VF610-Tower-Sound-Card";
283         simple-audio-card,format = "left_j";
284         simple-audio-card,bitclock-master = <&dailink0_master>;
285         simple-audio-card,frame-master = <&dailink0_master>;
286         simple-audio-card,widgets =
287                 "Microphone", "Microphone Jack",
288                 "Headphone", "Headphone Jack",
289                 "Speaker", "External Speaker";
290         simple-audio-card,routing =
291                 "MIC_IN", "Microphone Jack",
292                 "Headphone Jack", "HP_OUT",
293                 "External Speaker", "LINE_OUT";
294 
295         simple-audio-card,cpu {
296             sound-dai = <&sh_fsi2 0>;
297         };
298 
299         dailink0_master: simple-audio-card,codec {
300             sound-dai = <&ak4648>;
301             clocks = <&osc>;
302         };
303     };
304 
305 # --------------------
306 # Multi DAI links
307 # --------------------
308   - |
309     sound {
310         compatible = "simple-audio-card";
311         simple-audio-card,name = "Cubox Audio";
312 
313         #address-cells = <1>;
314         #size-cells = <0>;
315 
316         simple-audio-card,dai-link@0 {          /* I2S - HDMI */
317             reg = <0>;
318             format = "i2s";
319             cpu {
320                 sound-dai = <&audio0>;
321             };
322             codec {
323                 sound-dai = <&tda998x0>;
324             };
325         };
326 
327         simple-audio-card,dai-link@1 {          /* S/PDIF - HDMI */
328             reg = <1>;
329             cpu {
330                 sound-dai = <&audio1>;
331             };
332             codec {
333                 sound-dai = <&tda998x1>;
334             };
335         };
336 
337         simple-audio-card,dai-link@2 {          /* S/PDIF - S/PDIF */
338             reg = <2>;
339             cpu {
340                 sound-dai = <&audio2>;
341             };
342             codec {
343                 sound-dai = <&spdif_codec>;
344             };
345         };
346     };
347 
348 # --------------------
349 # route audio from IMX6 SSI2 through TLV320DAC3100 codec
350 # through TPA6130A2 amplifier to headphones:
351 # --------------------
352   - |
353     sound {
354         compatible = "simple-audio-card";
355 
356         simple-audio-card,widgets =
357             "Headphone", "Headphone Jack";
358         simple-audio-card,routing =
359             "Headphone Jack", "HPLEFT",
360             "Headphone Jack", "HPRIGHT",
361             "LEFTIN", "HPL",
362             "RIGHTIN", "HPR";
363         simple-audio-card,aux-devs = <&amp>;
364         simple-audio-card,cpu {
365             sound-dai = <&ssi2>;
366         };
367         simple-audio-card,codec {
368             sound-dai = <&codec>;
369             clocks = <&clocks>;
370         };
371     };
372 
373 # --------------------
374 # route audio to/from a codec through an amplifier
375 # designed with a potentiometer driven by IIO:
376 # --------------------
377   - |
378     sound {
379         compatible = "simple-audio-card";
380 
381         simple-audio-card,aux-devs = <&amp_in>, <&amp_out>;
382         simple-audio-card,routing =
383             "CODEC LEFTIN", "AMP_IN LEFT OUT",
384             "CODEC RIGHTIN", "AMP_IN RIGHT OUT",
385             "AMP_OUT LEFT IN", "CODEC LEFTOUT",
386             "AMP_OUT RIGHT IN", "CODEC RIGHTOUT";
387 
388         simple-audio-card,additional-devs {
389             amp_out: iio-aux-out {
390                 compatible = "audio-iio-aux";
391                 io-channels = <&pot_out 0>, <&pot_out 1>;
392                 io-channel-names = "LEFT", "RIGHT";
393                 snd-control-invert-range = <1 1>;
394                 sound-name-prefix = "AMP_OUT";
395             };
396 
397             amp_in: iio_aux-in {
398                 compatible = "audio-iio-aux";
399                 io-channels = <&pot_in 0>, <&pot_in 1>;
400                 io-channel-names = "LEFT", "RIGHT";
401                 sound-name-prefix = "AMP_IN";
402             };
403         };
404 
405         simple-audio-card,cpu {
406             sound-dai = <&cpu>;
407         };
408 
409         simple-audio-card,codec {
410             sound-dai = <&codec>;
411             clocks = <&clocks>;
412         };
413     };
414 
415 # --------------------
416 # Sampling Rate Conversion
417 # --------------------
418   - |
419     sound {
420         compatible = "simple-audio-card";
421 
422         simple-audio-card,name = "rsnd-ak4643";
423         simple-audio-card,format = "left_j";
424         simple-audio-card,bitclock-master = <&sndcodec>;
425         simple-audio-card,frame-master = <&sndcodec>;
426 
427         simple-audio-card,convert-rate = <48000>;
428 
429         simple-audio-card,prefix = "ak4642";
430         simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
431                                     "DAI0 Capture", "ak4642 Capture";
432 
433         sndcpu: simple-audio-card,cpu {
434             sound-dai = <&rcar_sound>;
435         };
436 
437         sndcodec: simple-audio-card,codec {
438             sound-dai = <&ak4643>;
439             system-clock-frequency = <11289600>;
440         };
441     };
442 
443 # --------------------
444 # 2 CPU 1 Codec (Mixing)
445 # --------------------
446   - |
447     sound {
448         compatible = "simple-audio-card";
449         #address-cells = <1>;
450         #size-cells = <0>;
451 
452         simple-audio-card,name = "rsnd-ak4643";
453         simple-audio-card,format = "left_j";
454         simple-audio-card,bitclock-master = <&dpcmcpu>;
455         simple-audio-card,frame-master = <&dpcmcpu>;
456 
457         simple-audio-card,convert-rate = <48000>;
458         simple-audio-card,convert-channels = <2>;
459 
460         simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
461                                     "ak4642 Playback", "DAI1 Playback";
462 
463         dpcmcpu: simple-audio-card,cpu@0 {
464             reg = <0>;
465             sound-dai = <&rcar_sound 0>;
466         };
467 
468         simple-audio-card,cpu@1 {
469             reg = <1>;
470             sound-dai = <&rcar_sound 1>;
471         };
472 
473         simple-audio-card,codec {
474             prefix = "ak4642";
475             sound-dai = <&ak4643>;
476             clocks = <&audio_clock>;
477         };
478     };
479 
480 # --------------------
481 # Multi DAI links with DPCM:
482 #
483 # CPU0 ------ ak4613
484 # CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
485 # CPU2 --/                /* DPCM 3ch/4ch */
486 # CPU3 --/                /* DPCM 5ch/6ch */
487 # CPU4 --/                /* DPCM 7ch/8ch */
488 # CPU5 ------ PCM3168A-c
489 # --------------------
490   - |
491     sound {
492         compatible = "simple-audio-card";
493         #address-cells = <1>;
494         #size-cells = <0>;
495 
496         simple-audio-card,routing =
497             "pcm3168a Playback", "DAI1 Playback",
498             "pcm3168a Playback", "DAI2 Playback",
499             "pcm3168a Playback", "DAI3 Playback",
500             "pcm3168a Playback", "DAI4 Playback";
501 
502         simple-audio-card,dai-link@0 {
503             reg = <0>;
504             format = "left_j";
505             bitclock-master = <&sndcpu0>;
506             frame-master = <&sndcpu0>;
507 
508             sndcpu0: cpu {
509                 sound-dai = <&rcar_sound 0>;
510             };
511             codec {
512                 sound-dai = <&ak4613>;
513             };
514         };
515 
516         simple-audio-card,dai-link@1 {
517             reg = <1>;
518             format = "i2s";
519             bitclock-master = <&sndcpu1>;
520             frame-master = <&sndcpu1>;
521 
522             convert-channels = <8>; /* TDM Split */
523 
524             sndcpu1: cpu-0 {
525                 sound-dai = <&rcar_sound 1>;
526             };
527             cpu-1 {
528                 sound-dai = <&rcar_sound 2>;
529             };
530             cpu-2 {
531                 sound-dai = <&rcar_sound 3>;
532             };
533             cpu-3 {
534                 sound-dai = <&rcar_sound 4>;
535             };
536             codec {
537                 mclk-fs = <512>;
538                 prefix = "pcm3168a";
539                 dai-tdm-slot-num = <8>;
540                 sound-dai = <&pcm3168a 0>;
541             };
542         };
543 
544         simple-audio-card,dai-link@2 {
545             reg = <2>;
546             format = "i2s";
547             bitclock-master = <&sndcpu2>;
548             frame-master = <&sndcpu2>;
549 
550             sndcpu2: cpu {
551                 sound-dai = <&rcar_sound 5>;
552             };
553             codec {
554                 mclk-fs = <512>;
555                 prefix = "pcm3168a";
556                 sound-dai = <&pcm3168a 1>;
557             };
558         };
559     };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php