1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * audio-graph-card2-custom-sample.dtsi 4 * 5 * Copyright (C) 2020 Renesas Electronics Corp 6 * Copyright (C) 2020 Kuninori Morimoto <kunino 7 * 8 * This sample indicates how to use audio-grap 9 * custom driver. "audio-graph-card2-custom-sa 10 * which is using audio-graph-card2. 11 * 12 * You can easily use this sample by adding be 13 * and add new CONFIG to your .config. 14 * 15 * #include "../../../../../sound/soc/gen 16 * 17 * CONFIG_SND_AUDIO_GRAPH_CARD2 18 * CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SA 19 * CONFIG_SND_TEST_COMPONENT 20 * 21 * 22 * You can indicate more detail each device be 23 * "compatible" on each test-component. see be 24 * 25 * test_cpu { 26 * - compatible = "test-cpu"; 27 * + compatible = "test-cpu-verbose 28 * ... 29 * }; 30 * 31 * test_codec { 32 * - compatible = "test-codec"; 33 * + compatible = "test-codec-verbo 34 * ... 35 * }; 36 * 37 * 38 * Below sample doesn't use "format" property, 39 * because test-component driver (test-cpu/tes 40 * snd_soc_dai_ops :: .auto_selectable_formats 41 * see 42 * snd_soc_runtime_get_dai_fmt() 43 * linux/sound/soc/generic/test-component 44 */ 45 / { 46 /* 47 * @ : used at links 48 * 49 * [Normal] 50 * cpu0 <-@-----------------> code 51 * 52 * [Semi-Multi] 53 * 54 * CPU:Codec = 1:N 55 * 56 * +-+ 57 * cpu7 <-@------->| |-> codec12 58 * | |-> codec13 59 * +-+ 60 * 61 * [Multi-CPU/Codec-0] 62 * +-+ +-+ 63 * cpu1 <--| |<-@--------->| |-> c 64 * cpu2 <--| | | |-> 65 * +-+ +-+ 66 * 67 * [Multi-CPU/Codec-1] 68 * 69 * +-+ +-+ 70 * | |<-@--------->| | 71 * | | | | 72 * cpu8 <--| |<----------->| |-> 73 * cpu9 <--| |<---+------->| |-> 74 * +-+ \------>| |-> 75 * +-+ 76 * 77 * [Multi-CPU/Codec-2] 78 * 79 * +-+ +-+ 80 * | |<-@--------->| | 81 * | | | | 82 * cpu10 <-| |<----------->| |-> 83 * cpu11 <-| |<-----+----->| |-> 84 * cpu12 <-| |<----/ +-+ 85 * +-+ 86 * 87 * [DPCM] 88 * 89 * CPU3/CPU4 are converting rate 90 * 91 * FE BE 92 * **** 93 * cpu3 <-@--* *--@-> codec3 94 * cpu4 <-@--* * (44.1kHz) 95 * **** 96 * 97 * [DPCM-Multi] 98 * 99 * --NOTE-- 100 * Multi-FE is not supported by ASoC. 101 * 102 * FE BE 103 * **** +-+ 104 * cpu5 <-@--* *--@-> | | -> code 105 * cpu6 <-@--* * | | -> code 106 * **** +-+ 107 * 108 * [Codec2Codec] 109 * +-@-> codec 110 * | 111 * +---> codec 112 * 113 * [Codec2Codec-Multi] 114 * 115 * --NOTE-- 116 * Multi connect N:M is not supported 117 * 118 * +-+ 119 * +-@->| |-> 120 * | | |-> 121 * | +-+ 122 * | +-+ 123 * +--->| |-> 124 * | |-> 125 * +-+ 126 */ 127 audio-graph-card2-custom-sample { 128 /* 129 * You can use audio-graph-car 130 * 131 * compatible = "audio-graph-c 132 */ 133 compatible = "audio-graph-card 134 135 /* for [DPCM] 136 /* BE 137 routing = "TC DAI3 Playback", 138 "TC DAI3 Playback", 139 "DAI3 Capture", 140 "DAI4 Capture", 141 /* for [DPCM-Multi] 142 /* BE 143 "TC DAI4 Playback", 144 "TC DAI5 Playback", 145 "TC DAI4 Playback", 146 "TC DAI5 Playback", 147 "DAI5 Capture", 148 "DAI5 Capture", 149 "DAI6 Capture", 150 "DAI6 Capture", 151 /* for [Codec2Codec] * 152 "TC OUT", 153 "TC DAI6 Capture", 154 /* for [Codec2Codec-Mu 155 "TC OUT", 156 "TC DAI8 Capture", 157 "TC OUT", 158 "TC DAI9 Capture", 159 160 links = < 161 /* 162 * [Normal]: cpu side 163 * cpu0/codec0 164 */ 165 &cpu0 166 167 /* 168 * [Semi-Multi] 169 * cpu7/codec12/codec1 170 */ 171 &sm0 172 173 /* 174 * [Multi-CPU/Codec-0] 175 * cpu1/cpu2/codec1/co 176 */ 177 &mcpu0 178 179 /* 180 * [Multi-CPU/Codec-1] 181 * cpu8/cpu9/codec14/c 182 * 183 * Because it will rea 184 * disable it so far. 185 * If you want to try 186 */ 187 //&mcpu1 188 189 /* 190 * [Multi-CPU/Codec-2] 191 * cpu10/cpu11/cpu12/c 192 * 193 * Because it will rea 194 * disable it so far. 195 * If you want to try 196 */ 197 //&mcpu2 198 199 /* 200 * [DPCM]: both FE / B 201 * cpu3/cpu4/codec3 202 */ 203 &fe00 &fe01 &be0 204 205 /* 206 * [DPCM-Multi]: both 207 * cpu5/cpu6/codec4/co 208 */ 209 &fe10 &fe11 &be1 210 211 /* 212 * [Codec2Codec]: cpu 213 * codec6/codec7 214 */ 215 &c2c 216 217 /* 218 * [Codec2Codec-Multi] 219 * codec8/codec9/codec 220 */ 221 &c2c_m 222 >; 223 224 multi { 225 #address-cells = <1>; 226 #size-cells = <0>; 227 228 /* 229 * [Multi-CPU-0] 230 * 231 * +---+ 232 * cpu1 <--|A X|<- 233 * cpu2 <--|B | 234 * +---+ 235 */ 236 ports@0 { 237 reg = <0>; 238 #address-cells 239 #size-cells = 240 mcpu0: port@0 { reg = 241 port@1 { reg = 242 port@2 { reg = 243 }; 244 245 /* 246 * [Multi-Codec-0] 247 * 248 * +---+ 249 * cpu1 <--|A X|<- 250 * cpu2 <--|B | 251 * +---+ 252 */ 253 ports@1 { 254 reg = <1>; 255 #address-cells 256 #size-cells = 257 port@0 { reg = 258 port@1 { reg = 259 port@2 { reg = 260 }; 261 262 /* 263 * [DPCM-Multi]::BE 264 * 265 * FE 266 * **** 267 * cpu5 <-@--* *- 268 * cpu6 <-@--* * 269 * **** 270 */ 271 ports@2 { 272 reg = <2>; 273 #address-cells 274 #size-cells = 275 port@0 { reg = 276 port@1 { reg = 277 port@2 { reg = 278 }; 279 280 /* 281 * [Codec2Codec-Multi] 282 * 283 * +---+ 284 * +-@->|X A|- 285 * | | B|- 286 * | +---+ 287 * | +---+ 288 * +--->|x a|- 289 * | b|- 290 * +---+ 291 */ 292 ports@3 { 293 reg = <3>; 294 #address-cells 295 #size-cells = 296 port@0 { reg = 297 port@1 { reg = 298 port@2 { reg = 299 }; 300 301 /* 302 * [Codec2Codec-Multi] 303 * 304 * +---+ 305 * +-@->|X A|- 306 * | | B|- 307 * | +---+ 308 * | +---+ 309 * +--->|x a|- 310 * | b|- 311 * +---+ 312 */ 313 ports@4 { 314 reg = <4>; 315 #address-cells 316 #size-cells = 317 port@0 { reg = 318 port@1 { reg = 319 port@2 { reg = 320 }; 321 322 /* 323 * [Semi-Multi] 324 * 325 * 326 * cpu7 <-@------- 327 * 328 * 329 */ 330 ports@5 { 331 reg = <5>; 332 #address-cells 333 #size-cells = 334 port@0 { reg = 335 port@1 { reg = 336 port@2 { reg = 337 }; 338 339 /* 340 * [Multi-CPU-1] 341 * 342 * +---+ 343 * | X|<- 344 * | | 345 * cpu8 <--|A 1|< 346 * cpu9 <--|B 2|< 347 * +---+ 348 * 349 */ 350 ports@6 { 351 reg = <6>; 352 #address-cells 353 #size-cells = 354 mcpu1: port@0 { reg = 355 port@1 { 356 #addre 357 #size- 358 reg = 359 mcpu11 360 mcpu11 361 }; 362 port@2 { 363 #addre 364 #size- 365 reg = 366 mcpu12 367 mcpu12 368 mcpu12 369 }; 370 }; 371 372 /* 373 * [Multi-Codec-1] 374 * 375 * +---+ 376 * | X|<- 377 * | | 378 * cpu8 <--|A 1|< 379 * cpu9 <--|B 2|< 380 * +---+ 381 * 382 */ 383 ports@7 { 384 reg = <7>; 385 #address-cells 386 #size-cells = 387 port@0 { reg = 388 port@1 { 389 #addre 390 #size- 391 reg = 392 mcodec 393 mcodec 394 }; 395 port@2 { 396 #addre 397 #size- 398 reg = 399 mcodec 400 mcodec 401 }; 402 port@3 { 403 #addre 404 #size- 405 reg = 406 mcodec 407 mcodec 408 }; 409 }; 410 411 /* 412 * [Multi-CPU-2] 413 * 414 * +---+ 415 * | X|<- 416 * | | 417 * cpu10 <-|A 1|< 418 * cpu11 <-|B 2|< 419 * cpu12 <-|C 3|< 420 * +---+ 421 */ 422 ports@8 { 423 reg = <8>; 424 #address-cells 425 #size-cells = 426 mcpu2: port@0 { reg = 427 port@1 { 428 #addre 429 #size- 430 reg = 431 mcpu21 432 mcpu21 433 }; 434 port@2 { 435 #addre 436 #size- 437 reg = 438 mcpu22 439 mcpu22 440 }; 441 port@3 { 442 #addre 443 #size- 444 reg = 445 mcpu23 446 mcpu23 447 }; 448 }; 449 450 /* 451 * [Multi-Codec-2] 452 * 453 * +---+ 454 * | X|<- 455 * | | 456 * cpu10 <-|A 1|< 457 * cpu11 <-|B 2|< 458 * cpu12 <-|C 3|< 459 * +---+ 460 */ 461 ports@9 { 462 reg = <9>; 463 #address-cells 464 #size-cells = 465 port@0 { reg = 466 port@1 { 467 #addre 468 #size- 469 reg = 470 mcodec 471 mcodec 472 }; 473 port@2 { 474 #addre 475 #size- 476 reg = 477 mcodec 478 mcodec 479 mcodec 480 }; 481 }; 482 }; 483 484 dpcm { 485 #address-cells = <1>; 486 #size-cells = <0>; 487 488 ports@0 { 489 reg = <0>; 490 491 #address-cells 492 #size-cells = 493 /* 494 * [DPCM]::FE 495 * 496 * FE 497 * 498 * cpu3 <- 499 * cpu4 < 500 * 501 */ 502 fe00: port@0 { reg = 503 fe01: port@1 { reg = 504 505 /* 506 * [DPCM-Multi 507 * 508 * 509 * 510 * cpu5 <- 511 * cpu6 <- 512 * 513 */ 514 fe10: port@2 { reg = 515 fe11: port@3 { reg = 516 }; 517 518 ports@1 { 519 reg = <1>; 520 521 #address-cells 522 #size-cells = 523 /* 524 * [DPCM]::BE 525 * 526 * FE 527 * 528 * cpu3 <- 529 * cpu4 < 530 * 531 */ 532 be0: port@0 { reg = 533 534 /* 535 * [DPCM-Multi 536 * 537 * 538 * 539 * cpu5 <- 540 * cpu6 <- 541 * 542 */ 543 be1: port@1 { reg = 544 }; 545 }; 546 547 codec2codec { 548 #address-cells = <1>; 549 #size-cells = <0>; 550 /* 551 * [Codec2Codec] 552 * 553 * +-@(c2c)-> cod 554 * | 555 * +--------> cod 556 */ 557 ports@0 { 558 reg = <0>; 559 560 #address-cells 561 #size-cells = 562 563 /* use default 564 c2c: port@0 { reg = 565 port@1 { reg = 566 }; 567 568 /* 569 * [Codec2Codec-Multi] 570 * 571 * 572 * +-@(c2c_m)- 573 * | 574 * | 575 * | 576 * +---------- 577 * 578 * 579 */ 580 ports@1 { 581 reg = <1>; 582 583 #address-cells 584 #size-cells = 585 586 /* use origina 587 rate = <48000> 588 c2c_m: port@0 { reg = 589 port@1 { reg = 590 }; 591 }; 592 }; 593 594 test_cpu { 595 /* 596 * update compatible to indica 597 * if you want. see test-compa 598 * 599 * ex) 600 * - compatible = "test-c 601 * + compatible = "test-c 602 */ 603 compatible = "test-cpu"; 604 ports { 605 #address-cells = <1>; 606 #size-cells = <0>; 607 608 bitclock-master; 609 frame-master; 610 /* [Normal] */ 611 cpu0: port@0 { reg = < 612 613 /* [Multi-CPU-0] */ 614 port@1 { reg = < 615 port@2 { reg = < 616 617 /* [DPCM]::FE */ 618 port@3 { reg = < 619 port@4 { reg = < 620 621 /* [DPCM-Multi]::FE */ 622 port@5 { reg = < 623 port@6 { reg = < 624 625 /* [Semi-Multi] */ 626 sm0: port@7 { reg = < 627 628 /* [Multi-CPU-1] */ 629 port@8 { reg = < 630 port@9 { reg = < 631 /* [Multi-CPU-2] */ 632 port@a { reg = < 633 port@b { reg = < 634 port@c { reg = < 635 }; 636 }; 637 638 test_codec { 639 /* 640 * update compatible to indica 641 * if you want. see test-compa 642 * 643 * ex) 644 * - compatible = "test-c 645 * + compatible = "test-c 646 */ 647 compatible = "test-codec"; 648 ports { 649 #address-cells = <1>; 650 #size-cells = <0>; 651 652 /* 653 * prefix can be added 654 * see audio-graph-car 655 */ 656 prefix = "TC"; 657 658 /* [Normal] */ 659 port@0 { reg = <0>; c 660 661 /* [Multi-Codec-0] */ 662 port@1 { reg = <1>; c 663 port@2 { reg = <2>; c 664 665 /* [DPCM]::BE */ 666 port@3 { 667 convert-rate = 668 reg = <3>; cod 669 }; 670 671 /* [DPCM-Multi]::BE */ 672 port@4 { reg = <4>; c 673 port@5 { reg = <5>; c 674 675 /* [Codec2Codec] */ 676 port@6 { bitclock-mas 677 frame-master 678 reg = <6>; c 679 port@7 { reg = <7>; c 680 681 /* [Codec2Codec-Multi] 682 port@8 { bitclock-mas 683 frame-master 684 reg = <8>; 685 port@9 { reg = <9>; 686 port@a { reg = <10>; 687 port@b { reg = <11>; 688 689 /* [Semi-Multi] */ 690 port@c { reg = <12>; c 691 port@d { reg = <13>; c 692 693 /* [Multi-Codec-1] */ 694 port@e { reg = <14>; 695 port@f { reg = <15>; 696 port@10 { reg = <16>; 697 /* [Multi-Codec-2] */ 698 port@11 { reg = <17>; 699 port@12 { reg = <18>; 700 }; 701 }; 702 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.