.. | .. |
---|
39 | 39 | Playback: [MEM] -> [SRC2] -> [DVC0] -> [SSIU0/SSI0] -> [codec] |
---|
40 | 40 | Capture: [MEM] <- [DVC1] <- [SRC3] <- [SSIU1/SSI1] <- [codec] |
---|
41 | 41 | |
---|
42 | | - &rcar_sound { |
---|
43 | | - ... |
---|
44 | | - rcar_sound,dai { |
---|
45 | | - dai0 { |
---|
46 | | - playback = <&ssi0 &src2 &dvc0>; |
---|
47 | | - capture = <&ssi1 &src3 &dvc1>; |
---|
48 | | - }; |
---|
49 | | - }; |
---|
50 | | - }; |
---|
| 42 | +see "Example: simple sound card" |
---|
51 | 43 | |
---|
52 | 44 | You can use below. |
---|
53 | 45 | ${LINUX}/arch/arm/boot/dts/r8a7790.dts can be good example. |
---|
.. | .. |
---|
83 | 75 | ** Asynchronous mode |
---|
84 | 76 | ------------------ |
---|
85 | 77 | |
---|
86 | | -You need to use "simple-scu-audio-card" sound card for it. |
---|
87 | | -example) |
---|
88 | | - |
---|
89 | | - sound { |
---|
90 | | - compatible = "simple-scu-audio-card"; |
---|
91 | | - ... |
---|
92 | | - /* |
---|
93 | | - * SRC Asynchronous mode setting |
---|
94 | | - * Playback: |
---|
95 | | - * All input data will be converted to 48kHz |
---|
96 | | - * Capture: |
---|
97 | | - * Inputed 48kHz data will be converted to |
---|
98 | | - * system specified Hz |
---|
99 | | - */ |
---|
100 | | - simple-audio-card,convert-rate = <48000>; |
---|
101 | | - ... |
---|
102 | | - simple-audio-card,cpu { |
---|
103 | | - sound-dai = <&rcar_sound>; |
---|
104 | | - }; |
---|
105 | | - simple-audio-card,codec { |
---|
106 | | - ... |
---|
107 | | - }; |
---|
108 | | - }; |
---|
| 78 | +You need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it. |
---|
| 79 | +see "Example: simple sound card for Asynchronous mode" |
---|
109 | 80 | |
---|
110 | 81 | ------------------ |
---|
111 | 82 | ** Synchronous mode |
---|
.. | .. |
---|
141 | 112 | ${LINUX}/sound/soc/sh/rcar/ctu.c |
---|
142 | 113 | - comment of header |
---|
143 | 114 | |
---|
144 | | -You need to use "simple-scu-audio-card" sound card for it. |
---|
145 | | -example) |
---|
146 | | - |
---|
147 | | - sound { |
---|
148 | | - compatible = "simple-scu-audio-card"; |
---|
149 | | - ... |
---|
150 | | - /* |
---|
151 | | - * CTU setting |
---|
152 | | - * All input data will be converted to 2ch |
---|
153 | | - * as output data |
---|
154 | | - */ |
---|
155 | | - simple-audio-card,convert-channels = <2>; |
---|
156 | | - ... |
---|
157 | | - simple-audio-card,cpu { |
---|
158 | | - sound-dai = <&rcar_sound>; |
---|
159 | | - }; |
---|
160 | | - simple-audio-card,codec { |
---|
161 | | - ... |
---|
162 | | - }; |
---|
163 | | - }; |
---|
| 115 | +You need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it. |
---|
| 116 | +see "Example: simple sound card for channel convert" |
---|
164 | 117 | |
---|
165 | 118 | Ex) Exchange output channel |
---|
166 | 119 | Input -> Output |
---|
.. | .. |
---|
190 | 143 | aplay -D plughw:0,0 xxxx.wav & |
---|
191 | 144 | aplay -D plughw:0,1 yyyy.wav |
---|
192 | 145 | |
---|
193 | | -You need to use "simple-scu-audio-card" sound card for it. |
---|
| 146 | +You need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it. |
---|
194 | 147 | Ex) |
---|
195 | 148 | [MEM] -> [SRC1] -> [CTU02] -+-> [MIX0] -> [DVC0] -> [SSI0] |
---|
196 | 149 | | |
---|
197 | 150 | [MEM] -> [SRC2] -> [CTU03] -+ |
---|
198 | 151 | |
---|
199 | | - sound { |
---|
200 | | - #address-cells = <1>; |
---|
201 | | - #size-cells = <0>; |
---|
202 | | - |
---|
203 | | - compatible = "simple-scu-audio-card"; |
---|
204 | | - ... |
---|
205 | | - simple-audio-card,cpu@0 { |
---|
206 | | - reg = <0>; |
---|
207 | | - sound-dai = <&rcar_sound 0>; |
---|
208 | | - }; |
---|
209 | | - simple-audio-card,cpu@1 { |
---|
210 | | - reg = <1>; |
---|
211 | | - sound-dai = <&rcar_sound 1>; |
---|
212 | | - }; |
---|
213 | | - simple-audio-card,codec { |
---|
214 | | - ... |
---|
215 | | - }; |
---|
216 | | - }; |
---|
217 | | - |
---|
218 | | - &rcar_sound { |
---|
219 | | - ... |
---|
220 | | - rcar_sound,dai { |
---|
221 | | - dai0 { |
---|
222 | | - playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>; |
---|
223 | | - }; |
---|
224 | | - dai1 { |
---|
225 | | - playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; |
---|
226 | | - }; |
---|
227 | | - }; |
---|
228 | | - }; |
---|
| 152 | +see "Example: simple sound card for MIXer" |
---|
229 | 153 | |
---|
230 | 154 | ============================================= |
---|
231 | 155 | * DVC (Digital Volume and Mute Function) |
---|
.. | .. |
---|
257 | 181 | * SSIU (Serial Sound Interface Unit) |
---|
258 | 182 | ============================================= |
---|
259 | 183 | |
---|
260 | | -There is no DT settings for SSIU, because SSIU will be automatically |
---|
261 | | -selected via SSI. |
---|
262 | 184 | SSIU can avoid some under/over run error, because it has some buffer. |
---|
263 | 185 | But you can't use it if SSI was PIO mode. |
---|
264 | | -In DMA mode, you can select not to use SSIU by using "no-busif" on DT. |
---|
| 186 | +In DMA mode, you can select not to use SSIU by using "no-busif" via SSI. |
---|
265 | 187 | |
---|
266 | | - &ssi0 { |
---|
267 | | - no-busif; |
---|
268 | | - }; |
---|
| 188 | +SSIU handles BUSIF which will be used for TDM Split mode. |
---|
| 189 | +This driver is assuming that audio-graph card will be used. |
---|
| 190 | + |
---|
| 191 | +TDM Split mode merges 4 sounds. You can see 4 sound interface on system, |
---|
| 192 | +and these sounds will be merged SSIU/SSI. |
---|
| 193 | + |
---|
| 194 | + aplay -D plughw:0,0 xxxx.wav & |
---|
| 195 | + aplay -D plughw:0,1 xxxx.wav & |
---|
| 196 | + aplay -D plughw:0,2 xxxx.wav & |
---|
| 197 | + aplay -D plughw:0,3 xxxx.wav |
---|
| 198 | + |
---|
| 199 | + 2ch 8ch |
---|
| 200 | + [MEM] -> [SSIU 30] -+-> [SSIU 3] --> [Codec] |
---|
| 201 | + 2ch | |
---|
| 202 | + [MEM] -> [SSIU 31] -+ |
---|
| 203 | + 2ch | |
---|
| 204 | + [MEM] -> [SSIU 32] -+ |
---|
| 205 | + 2ch | |
---|
| 206 | + [MEM] -> [SSIU 33] -+ |
---|
| 207 | + |
---|
| 208 | +see "Example: simple sound card for TDM Split" |
---|
269 | 209 | |
---|
270 | 210 | ============================================= |
---|
271 | 211 | * SSI (Serial Sound Interface) |
---|
.. | .. |
---|
304 | 244 | You can use Multi-SSI. |
---|
305 | 245 | This is example of SSI0/SSI1/SSI2 (= for 6ch) |
---|
306 | 246 | |
---|
307 | | - &rcar_sound { |
---|
308 | | - ... |
---|
309 | | - rcar_sound,dai { |
---|
310 | | - dai0 { |
---|
311 | | - playback = <&ssi0 &ssi1 &ssi2 &src0 &dvc0>; |
---|
312 | | - }; |
---|
313 | | - }; |
---|
314 | | - }; |
---|
| 247 | +see "Example: simple sound card for Multi channel" |
---|
315 | 248 | |
---|
316 | 249 | ** TDM-SSI |
---|
317 | 250 | |
---|
.. | .. |
---|
319 | 252 | This is example of TDM 6ch. |
---|
320 | 253 | Driver can automatically switches TDM <-> stereo mode in this case. |
---|
321 | 254 | |
---|
322 | | - rsnd_tdm: sound { |
---|
323 | | - compatible = "simple-audio-card"; |
---|
324 | | - ... |
---|
325 | | - simple-audio-card,cpu { |
---|
326 | | - /* system can use TDM 6ch */ |
---|
327 | | - dai-tdm-slot-num = <6>; |
---|
328 | | - sound-dai = <&rcar_sound>; |
---|
329 | | - }; |
---|
330 | | - simple-audio-card,codec { |
---|
331 | | - ... |
---|
332 | | - }; |
---|
333 | | - }; |
---|
334 | | - |
---|
| 255 | +see "Example: simple sound card for TDM" |
---|
335 | 256 | |
---|
336 | 257 | ============================================= |
---|
337 | 258 | Required properties: |
---|
.. | .. |
---|
340 | 261 | - compatible : "renesas,rcar_sound-<soctype>", fallbacks |
---|
341 | 262 | "renesas,rcar_sound-gen1" if generation1, and |
---|
342 | 263 | "renesas,rcar_sound-gen2" if generation2 (or RZ/G1) |
---|
343 | | - "renesas,rcar_sound-gen3" if generation3 |
---|
| 264 | + "renesas,rcar_sound-gen3" if generation3 (or RZ/G2) |
---|
344 | 265 | Examples with soctypes are: |
---|
| 266 | + - "renesas,rcar_sound-r8a7742" (RZ/G1H) |
---|
345 | 267 | - "renesas,rcar_sound-r8a7743" (RZ/G1M) |
---|
| 268 | + - "renesas,rcar_sound-r8a7744" (RZ/G1N) |
---|
346 | 269 | - "renesas,rcar_sound-r8a7745" (RZ/G1E) |
---|
| 270 | + - "renesas,rcar_sound-r8a77470" (RZ/G1C) |
---|
| 271 | + - "renesas,rcar_sound-r8a774a1" (RZ/G2M) |
---|
| 272 | + - "renesas,rcar_sound-r8a774b1" (RZ/G2N) |
---|
| 273 | + - "renesas,rcar_sound-r8a774c0" (RZ/G2E) |
---|
| 274 | + - "renesas,rcar_sound-r8a774e1" (RZ/G2H) |
---|
347 | 275 | - "renesas,rcar_sound-r8a7778" (R-Car M1A) |
---|
348 | 276 | - "renesas,rcar_sound-r8a7779" (R-Car H1) |
---|
349 | 277 | - "renesas,rcar_sound-r8a7790" (R-Car H2) |
---|
.. | .. |
---|
353 | 281 | - "renesas,rcar_sound-r8a7795" (R-Car H3) |
---|
354 | 282 | - "renesas,rcar_sound-r8a7796" (R-Car M3-W) |
---|
355 | 283 | - "renesas,rcar_sound-r8a77965" (R-Car M3-N) |
---|
| 284 | + - "renesas,rcar_sound-r8a77990" (R-Car E3) |
---|
| 285 | + - "renesas,rcar_sound-r8a77995" (R-Car D3) |
---|
356 | 286 | - reg : Should contain the register physical address. |
---|
357 | 287 | required register is |
---|
358 | 288 | SRU/ADG/SSI if generation1 |
---|
359 | | - SRU/ADG/SSIU/SSI if generation2 |
---|
| 289 | + SRU/ADG/SSIU/SSI/AUDIO-DMAC-periperi if generation2/generation3 |
---|
| 290 | + Select extended AUDIO-DMAC-periperi address if SoC has it, |
---|
| 291 | + otherwise select normal AUDIO-DMAC-periperi address. |
---|
| 292 | +- reg-names : Should contain the register names. |
---|
| 293 | + scu/adg/ssi if generation1 |
---|
| 294 | + scu/adg/ssiu/ssi/audmapp if generation2/generation3 |
---|
360 | 295 | - rcar_sound,ssi : Should contain SSI feature. |
---|
361 | 296 | The number of SSI subnode should be same as HW. |
---|
| 297 | + see below for detail. |
---|
| 298 | +- rcar_sound,ssiu : Should contain SSIU feature. |
---|
| 299 | + The number of SSIU subnode should be same as HW. |
---|
362 | 300 | see below for detail. |
---|
363 | 301 | - rcar_sound,src : Should contain SRC feature. |
---|
364 | 302 | The number of SRC subnode should be same as HW. |
---|
.. | .. |
---|
399 | 337 | - no-busif : BUSIF is not ussed when [mem -> SSI] via DMA case |
---|
400 | 338 | - dma : Should contain Audio DMAC entry |
---|
401 | 339 | - dma-names : SSI case "rx" (=playback), "tx" (=capture) |
---|
| 340 | + Deprecated: see SSIU subnode properties |
---|
402 | 341 | SSIU case "rxu" (=playback), "txu" (=capture) |
---|
| 342 | + |
---|
| 343 | +SSIU subnode properties: |
---|
| 344 | +- dma : Should contain Audio DMAC entry |
---|
| 345 | +- dma-names : "rx" (=playback), "tx" (=capture) |
---|
403 | 346 | |
---|
404 | 347 | SRC subnode properties: |
---|
405 | 348 | - dma : Should contain Audio DMAC entry |
---|
.. | .. |
---|
529 | 472 | }; |
---|
530 | 473 | }; |
---|
531 | 474 | |
---|
| 475 | + rcar_sound,ssiu { |
---|
| 476 | + ssiu00: ssiu-0 { |
---|
| 477 | + dmas = <&audma0 0x15>, <&audma1 0x16>; |
---|
| 478 | + dma-names = "rx", "tx"; |
---|
| 479 | + }; |
---|
| 480 | + ssiu01: ssiu-1 { |
---|
| 481 | + dmas = <&audma0 0x35>, <&audma1 0x36>; |
---|
| 482 | + dma-names = "rx", "tx"; |
---|
| 483 | + }; |
---|
| 484 | + |
---|
| 485 | + ... |
---|
| 486 | + |
---|
| 487 | + ssiu95: ssiu-49 { |
---|
| 488 | + dmas = <&audma0 0xA5>, <&audma1 0xA6>; |
---|
| 489 | + dma-names = "rx", "tx"; |
---|
| 490 | + }; |
---|
| 491 | + ssiu96: ssiu-50 { |
---|
| 492 | + dmas = <&audma0 0xA7>, <&audma1 0xA8>; |
---|
| 493 | + dma-names = "rx", "tx"; |
---|
| 494 | + }; |
---|
| 495 | + ssiu97: ssiu-51 { |
---|
| 496 | + dmas = <&audma0 0xA9>, <&audma1 0xAA>; |
---|
| 497 | + dma-names = "rx", "tx"; |
---|
| 498 | + }; |
---|
| 499 | + }; |
---|
| 500 | + |
---|
532 | 501 | rcar_sound,ssi { |
---|
533 | 502 | ssi0: ssi-0 { |
---|
534 | 503 | interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>; |
---|
535 | | - dmas = <&audma0 0x01>, <&audma1 0x02>, <&audma0 0x15>, <&audma1 0x16>; |
---|
536 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
| 504 | + dmas = <&audma0 0x01>, <&audma1 0x02>; |
---|
| 505 | + dma-names = "rx", "tx"; |
---|
537 | 506 | }; |
---|
538 | 507 | ssi1: ssi-1 { |
---|
539 | 508 | interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>; |
---|
540 | | - dmas = <&audma0 0x03>, <&audma1 0x04>, <&audma0 0x49>, <&audma1 0x4a>; |
---|
541 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
| 509 | + dmas = <&audma0 0x03>, <&audma1 0x04>; |
---|
| 510 | + dma-names = "rx", "tx"; |
---|
542 | 511 | }; |
---|
543 | | - ssi2: ssi-2 { |
---|
544 | | - interrupts = <0 372 IRQ_TYPE_LEVEL_HIGH>; |
---|
545 | | - dmas = <&audma0 0x05>, <&audma1 0x06>, <&audma0 0x63>, <&audma1 0x64>; |
---|
546 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
547 | | - }; |
---|
548 | | - ssi3: ssi-3 { |
---|
549 | | - interrupts = <0 373 IRQ_TYPE_LEVEL_HIGH>; |
---|
550 | | - dmas = <&audma0 0x07>, <&audma1 0x08>, <&audma0 0x6f>, <&audma1 0x70>; |
---|
551 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
552 | | - }; |
---|
553 | | - ssi4: ssi-4 { |
---|
554 | | - interrupts = <0 374 IRQ_TYPE_LEVEL_HIGH>; |
---|
555 | | - dmas = <&audma0 0x09>, <&audma1 0x0a>, <&audma0 0x71>, <&audma1 0x72>; |
---|
556 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
557 | | - }; |
---|
558 | | - ssi5: ssi-5 { |
---|
559 | | - interrupts = <0 375 IRQ_TYPE_LEVEL_HIGH>; |
---|
560 | | - dmas = <&audma0 0x0b>, <&audma1 0x0c>, <&audma0 0x73>, <&audma1 0x74>; |
---|
561 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
562 | | - }; |
---|
563 | | - ssi6: ssi-6 { |
---|
564 | | - interrupts = <0 376 IRQ_TYPE_LEVEL_HIGH>; |
---|
565 | | - dmas = <&audma0 0x0d>, <&audma1 0x0e>, <&audma0 0x75>, <&audma1 0x76>; |
---|
566 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
567 | | - }; |
---|
568 | | - ssi7: ssi-7 { |
---|
569 | | - interrupts = <0 377 IRQ_TYPE_LEVEL_HIGH>; |
---|
570 | | - dmas = <&audma0 0x0f>, <&audma1 0x10>, <&audma0 0x79>, <&audma1 0x7a>; |
---|
571 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
572 | | - }; |
---|
| 512 | + |
---|
| 513 | + ... |
---|
| 514 | + |
---|
573 | 515 | ssi8: ssi-8 { |
---|
574 | 516 | interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>; |
---|
575 | | - dmas = <&audma0 0x11>, <&audma1 0x12>, <&audma0 0x7b>, <&audma1 0x7c>; |
---|
576 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
| 517 | + dmas = <&audma0 0x11>, <&audma1 0x12>; |
---|
| 518 | + dma-names = "rx", "tx"; |
---|
577 | 519 | }; |
---|
578 | 520 | ssi9: ssi-9 { |
---|
579 | 521 | interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>; |
---|
580 | | - dmas = <&audma0 0x13>, <&audma1 0x14>, <&audma0 0x7d>, <&audma1 0x7e>; |
---|
581 | | - dma-names = "rx", "tx", "rxu", "txu"; |
---|
| 522 | + dmas = <&audma0 0x13>, <&audma1 0x14>; |
---|
| 523 | + dma-names = "rx", "tx"; |
---|
582 | 524 | }; |
---|
583 | 525 | }; |
---|
584 | 526 | |
---|
.. | .. |
---|
644 | 586 | }; |
---|
645 | 587 | |
---|
646 | 588 | ============================================= |
---|
| 589 | +Example: simple sound card for Asynchronous mode |
---|
| 590 | +============================================= |
---|
| 591 | + |
---|
| 592 | +sound { |
---|
| 593 | + compatible = "simple-scu-audio-card"; |
---|
| 594 | + ... |
---|
| 595 | + /* |
---|
| 596 | + * SRC Asynchronous mode setting |
---|
| 597 | + * Playback: |
---|
| 598 | + * All input data will be converted to 48kHz |
---|
| 599 | + * Capture: |
---|
| 600 | + * Inputed 48kHz data will be converted to |
---|
| 601 | + * system specified Hz |
---|
| 602 | + */ |
---|
| 603 | + simple-audio-card,convert-rate = <48000>; |
---|
| 604 | + ... |
---|
| 605 | + simple-audio-card,cpu { |
---|
| 606 | + sound-dai = <&rcar_sound>; |
---|
| 607 | + }; |
---|
| 608 | + simple-audio-card,codec { |
---|
| 609 | + ... |
---|
| 610 | + }; |
---|
| 611 | +}; |
---|
| 612 | + |
---|
| 613 | +============================================= |
---|
| 614 | +Example: simple sound card for channel convert |
---|
| 615 | +============================================= |
---|
| 616 | + |
---|
| 617 | +sound { |
---|
| 618 | + compatible = "simple-scu-audio-card"; |
---|
| 619 | + ... |
---|
| 620 | + /* |
---|
| 621 | + * CTU setting |
---|
| 622 | + * All input data will be converted to 2ch |
---|
| 623 | + * as output data |
---|
| 624 | + */ |
---|
| 625 | + simple-audio-card,convert-channels = <2>; |
---|
| 626 | + ... |
---|
| 627 | + simple-audio-card,cpu { |
---|
| 628 | + sound-dai = <&rcar_sound>; |
---|
| 629 | + }; |
---|
| 630 | + simple-audio-card,codec { |
---|
| 631 | + ... |
---|
| 632 | + }; |
---|
| 633 | +}; |
---|
| 634 | + |
---|
| 635 | +============================================= |
---|
| 636 | +Example: simple sound card for MIXer |
---|
| 637 | +============================================= |
---|
| 638 | + |
---|
| 639 | +sound { |
---|
| 640 | + compatible = "simple-scu-audio-card"; |
---|
| 641 | + ... |
---|
| 642 | + simple-audio-card,cpu@0 { |
---|
| 643 | + sound-dai = <&rcar_sound 0>; |
---|
| 644 | + }; |
---|
| 645 | + simple-audio-card,cpu@1 { |
---|
| 646 | + sound-dai = <&rcar_sound 1>; |
---|
| 647 | + }; |
---|
| 648 | + simple-audio-card,codec { |
---|
| 649 | + ... |
---|
| 650 | + }; |
---|
| 651 | +}; |
---|
| 652 | + |
---|
| 653 | +&rcar_sound { |
---|
| 654 | + ... |
---|
| 655 | + rcar_sound,dai { |
---|
| 656 | + dai0 { |
---|
| 657 | + playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>; |
---|
| 658 | + }; |
---|
| 659 | + dai1 { |
---|
| 660 | + playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; |
---|
| 661 | + }; |
---|
| 662 | + }; |
---|
| 663 | +}; |
---|
| 664 | + |
---|
| 665 | +============================================= |
---|
647 | 666 | Example: simple sound card for TDM |
---|
648 | 667 | ============================================= |
---|
649 | 668 | |
---|
650 | | - rsnd_tdm: sound { |
---|
651 | | - compatible = "simple-audio-card"; |
---|
| 669 | +rsnd_tdm: sound { |
---|
| 670 | + compatible = "simple-audio-card"; |
---|
652 | 671 | |
---|
653 | | - simple-audio-card,format = "left_j"; |
---|
654 | | - simple-audio-card,bitclock-master = <&sndcodec>; |
---|
655 | | - simple-audio-card,frame-master = <&sndcodec>; |
---|
| 672 | + simple-audio-card,format = "left_j"; |
---|
| 673 | + simple-audio-card,bitclock-master = <&sndcodec>; |
---|
| 674 | + simple-audio-card,frame-master = <&sndcodec>; |
---|
656 | 675 | |
---|
657 | | - sndcpu: simple-audio-card,cpu { |
---|
658 | | - sound-dai = <&rcar_sound>; |
---|
659 | | - dai-tdm-slot-num = <6>; |
---|
| 676 | + sndcpu: simple-audio-card,cpu { |
---|
| 677 | + sound-dai = <&rcar_sound>; |
---|
| 678 | + dai-tdm-slot-num = <6>; |
---|
| 679 | + }; |
---|
| 680 | + |
---|
| 681 | + sndcodec: simple-audio-card,codec { |
---|
| 682 | + sound-dai = <&xxx>; |
---|
| 683 | + }; |
---|
| 684 | +}; |
---|
| 685 | + |
---|
| 686 | +============================================= |
---|
| 687 | +Example: simple sound card for TDM Split |
---|
| 688 | +============================================= |
---|
| 689 | + |
---|
| 690 | +sound_card: sound { |
---|
| 691 | + compatible = "audio-graph-scu-card"; |
---|
| 692 | + prefix = "xxxx"; |
---|
| 693 | + routing = "xxxx Playback", "DAI0 Playback", |
---|
| 694 | + "xxxx Playback", "DAI1 Playback", |
---|
| 695 | + "xxxx Playback", "DAI2 Playback", |
---|
| 696 | + "xxxx Playback", "DAI3 Playback"; |
---|
| 697 | + convert-channels = <8>; /* TDM Split */ |
---|
| 698 | + |
---|
| 699 | + dais = <&rsnd_port0 /* playback ch1/ch2 */ |
---|
| 700 | + &rsnd_port1 /* playback ch3/ch4 */ |
---|
| 701 | + &rsnd_port2 /* playback ch5/ch6 */ |
---|
| 702 | + &rsnd_port3 /* playback ch7/ch8 */ |
---|
| 703 | + >; |
---|
| 704 | +}; |
---|
| 705 | + |
---|
| 706 | +audio-codec { |
---|
| 707 | + ... |
---|
| 708 | + port { |
---|
| 709 | + codec_0: endpoint@1 { |
---|
| 710 | + remote-endpoint = <&rsnd_ep0>; |
---|
660 | 711 | }; |
---|
661 | | - |
---|
662 | | - sndcodec: simple-audio-card,codec { |
---|
663 | | - sound-dai = <&xxx>; |
---|
| 712 | + codec_1: endpoint@2 { |
---|
| 713 | + remote-endpoint = <&rsnd_ep1>; |
---|
| 714 | + }; |
---|
| 715 | + codec_2: endpoint@3 { |
---|
| 716 | + remote-endpoint = <&rsnd_ep2>; |
---|
| 717 | + }; |
---|
| 718 | + codec_3: endpoint@4 { |
---|
| 719 | + remote-endpoint = <&rsnd_ep3>; |
---|
664 | 720 | }; |
---|
665 | 721 | }; |
---|
| 722 | +}; |
---|
| 723 | + |
---|
| 724 | +&rcar_sound { |
---|
| 725 | + ... |
---|
| 726 | + ports { |
---|
| 727 | + rsnd_port0: port@0 { |
---|
| 728 | + rsnd_ep0: endpoint { |
---|
| 729 | + remote-endpoint = <&codec_0>; |
---|
| 730 | + ... |
---|
| 731 | + playback = <&ssiu30 &ssi3>; |
---|
| 732 | + }; |
---|
| 733 | + }; |
---|
| 734 | + rsnd_port1: port@1 { |
---|
| 735 | + rsnd_ep1: endpoint { |
---|
| 736 | + remote-endpoint = <&codec_1>; |
---|
| 737 | + ... |
---|
| 738 | + playback = <&ssiu31 &ssi3>; |
---|
| 739 | + }; |
---|
| 740 | + }; |
---|
| 741 | + rsnd_port2: port@2 { |
---|
| 742 | + rsnd_ep2: endpoint { |
---|
| 743 | + remote-endpoint = <&codec_2>; |
---|
| 744 | + ... |
---|
| 745 | + playback = <&ssiu32 &ssi3>; |
---|
| 746 | + }; |
---|
| 747 | + }; |
---|
| 748 | + rsnd_port3: port@3 { |
---|
| 749 | + rsnd_ep3: endpoint { |
---|
| 750 | + remote-endpoint = <&codec_3>; |
---|
| 751 | + ... |
---|
| 752 | + playback = <&ssiu33 &ssi3>; |
---|
| 753 | + }; |
---|
| 754 | + }; |
---|
| 755 | + }; |
---|
| 756 | +}; |
---|
666 | 757 | |
---|
667 | 758 | ============================================= |
---|
668 | 759 | Example: simple sound card for Multi channel |
---|