1 // SPDX-License-Identifier: GPL-2.0 1 // SPDX-License-Identifier: GPL-2.0 2 /* 2 /* 3 * audio-graph-card2-custom-sample.dtsi 3 * audio-graph-card2-custom-sample.dtsi 4 * 4 * 5 * Copyright (C) 2020 Renesas Electronics Corp 5 * Copyright (C) 2020 Renesas Electronics Corp. 6 * Copyright (C) 2020 Kuninori Morimoto <kunino 6 * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> 7 * 7 * 8 * This sample indicates how to use audio-grap 8 * This sample indicates how to use audio-graph-card2 and its 9 * custom driver. "audio-graph-card2-custom-sa 9 * custom driver. "audio-graph-card2-custom-sample" is the custome driver 10 * which is using audio-graph-card2. 10 * which is using audio-graph-card2. 11 * 11 * 12 * You can easily use this sample by adding be 12 * You can easily use this sample by adding below line on your DT file, 13 * and add new CONFIG to your .config. 13 * and add new CONFIG to your .config. 14 * 14 * 15 * #include "../../../../../sound/soc/gen 15 * #include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi" 16 * 16 * 17 * CONFIG_SND_AUDIO_GRAPH_CARD2 17 * CONFIG_SND_AUDIO_GRAPH_CARD2 18 * CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SA 18 * CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE 19 * CONFIG_SND_TEST_COMPONENT 19 * CONFIG_SND_TEST_COMPONENT 20 * 20 * 21 * 21 * 22 * You can indicate more detail each device be 22 * You can indicate more detail each device behavior as debug if you modify 23 * "compatible" on each test-component. see be 23 * "compatible" on each test-component. see below 24 * 24 * 25 * test_cpu { 25 * test_cpu { 26 * - compatible = "test-cpu"; 26 * - compatible = "test-cpu"; 27 * + compatible = "test-cpu-verbose 27 * + compatible = "test-cpu-verbose"; 28 * ... 28 * ... 29 * }; 29 * }; 30 * 30 * 31 * test_codec { 31 * test_codec { 32 * - compatible = "test-codec"; 32 * - compatible = "test-codec"; 33 * + compatible = "test-codec-verbo 33 * + compatible = "test-codec-verbose"; 34 * ... 34 * ... 35 * }; 35 * }; 36 * 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 */ 37 */ 45 / { 38 / { 46 /* 39 /* 47 * @ : used at links 40 * @ : used at links 48 * 41 * 49 * [Normal] 42 * [Normal] 50 * cpu0 <-@-----------------> code 43 * cpu0 <-@-----------------> codec0 51 * 44 * 52 * [Semi-Multi] !! 45 * [Multi-CPU/Codec] 53 * << 54 * CPU:Codec = 1:N << 55 * << 56 * +-+ << 57 * cpu7 <-@------->| |-> codec12 << 58 * | |-> codec13 << 59 * +-+ << 60 * << 61 * [Multi-CPU/Codec-0] << 62 * +-+ +-+ 46 * +-+ +-+ 63 * cpu1 <--| |<-@--------->| |-> c 47 * cpu1 <--| |<-@--------->| |-> codec1 64 * cpu2 <--| | | |-> 48 * cpu2 <--| | | |-> codec2 65 * +-+ +-+ 49 * +-+ +-+ 66 * 50 * 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] 51 * [DPCM] 88 * 52 * 89 * CPU3/CPU4 are converting rate 53 * CPU3/CPU4 are converting rate to 44100 90 * 54 * 91 * FE BE 55 * FE BE 92 * **** 56 * **** 93 * cpu3 <-@--* *--@-> codec3 57 * cpu3 <-@--* *--@-> codec3 94 * cpu4 <-@--* * (44.1kHz) 58 * cpu4 <-@--* * (44.1kHz) 95 * **** 59 * **** 96 * 60 * 97 * [DPCM-Multi] 61 * [DPCM-Multi] 98 * 62 * 99 * --NOTE-- 63 * --NOTE-- 100 * Multi-FE is not supported by ASoC. 64 * Multi-FE is not supported by ASoC. 101 * 65 * 102 * FE BE 66 * FE BE 103 * **** +-+ 67 * **** +-+ 104 * cpu5 <-@--* *--@-> | | -> code 68 * cpu5 <-@--* *--@-> | | -> codec4 105 * cpu6 <-@--* * | | -> code 69 * cpu6 <-@--* * | | -> codec5 106 * **** +-+ 70 * **** +-+ 107 * 71 * 108 * [Codec2Codec] 72 * [Codec2Codec] 109 * +-@-> codec 73 * +-@-> codec6 110 * | 74 * | 111 * +---> codec 75 * +---> codec7 112 * 76 * 113 * [Codec2Codec-Multi] 77 * [Codec2Codec-Multi] 114 * 78 * 115 * --NOTE-- 79 * --NOTE-- 116 * Multi connect N:M is not supported 80 * Multi connect N:M is not supported by ASoC. 117 * 81 * 118 * +-+ 82 * +-+ 119 * +-@->| |-> 83 * +-@->| |-> codec8 120 * | | |-> 84 * | | |-> codec9 121 * | +-+ 85 * | +-+ 122 * | +-+ 86 * | +-+ 123 * +--->| |-> 87 * +--->| |-> codec10 124 * | |-> 88 * | |-> codec11 125 * +-+ 89 * +-+ 126 */ 90 */ 127 audio-graph-card2-custom-sample { 91 audio-graph-card2-custom-sample { 128 /* 92 /* 129 * You can use audio-graph-car 93 * You can use audio-graph-card2 directly by using 130 * 94 * 131 * compatible = "audio-graph-c 95 * compatible = "audio-graph-card2"; 132 */ 96 */ 133 compatible = "audio-graph-card 97 compatible = "audio-graph-card2-custom-sample"; 134 98 135 /* for [DPCM] 99 /* for [DPCM] */ 136 /* BE 100 /* BE FE */ 137 routing = "TC DAI3 Playback", 101 routing = "TC DAI3 Playback", "DAI3 Playback", 138 "TC DAI3 Playback", 102 "TC DAI3 Playback", "DAI4 Playback", 139 "DAI3 Capture", 103 "DAI3 Capture", "TC DAI3 Capture", 140 "DAI4 Capture", 104 "DAI4 Capture", "TC DAI3 Capture", 141 /* for [DPCM-Multi] 105 /* for [DPCM-Multi] */ 142 /* BE 106 /* BE FE */ 143 "TC DAI4 Playback", 107 "TC DAI4 Playback", "DAI5 Playback", 144 "TC DAI5 Playback", 108 "TC DAI5 Playback", "DAI5 Playback", 145 "TC DAI4 Playback", 109 "TC DAI4 Playback", "DAI6 Playback", 146 "TC DAI5 Playback", 110 "TC DAI5 Playback", "DAI6 Playback", 147 "DAI5 Capture", 111 "DAI5 Capture", "TC DAI4 Capture", 148 "DAI5 Capture", 112 "DAI5 Capture", "TC DAI5 Capture", 149 "DAI6 Capture", 113 "DAI6 Capture", "TC DAI4 Capture", 150 "DAI6 Capture", 114 "DAI6 Capture", "TC DAI5 Capture", 151 /* for [Codec2Codec] * 115 /* for [Codec2Codec] */ 152 "TC OUT", 116 "TC OUT", "TC DAI7 Playback", 153 "TC DAI6 Capture", 117 "TC DAI6 Capture", "TC IN", 154 /* for [Codec2Codec-Mu 118 /* for [Codec2Codec-Multi] */ 155 "TC OUT", 119 "TC OUT", "TC DAI10 Playback", 156 "TC DAI8 Capture", 120 "TC DAI8 Capture", "TC IN", 157 "TC OUT", 121 "TC OUT", "TC DAI11 Playback", 158 "TC DAI9 Capture", 122 "TC DAI9 Capture", "TC IN"; 159 123 160 links = < 124 links = < 161 /* 125 /* 162 * [Normal]: cpu side 126 * [Normal]: cpu side only 163 * cpu0/codec0 127 * cpu0/codec0 164 */ 128 */ 165 &cpu0 129 &cpu0 166 130 167 /* 131 /* 168 * [Semi-Multi] !! 132 * [Multi-CPU/Codec]: cpu side only 169 * cpu7/codec12/codec1 << 170 */ << 171 &sm0 << 172 << 173 /* << 174 * [Multi-CPU/Codec-0] << 175 * cpu1/cpu2/codec1/co 133 * cpu1/cpu2/codec1/codec2 176 */ 134 */ 177 &mcpu0 135 &mcpu0 178 136 179 /* 137 /* 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 138 * [DPCM]: both FE / BE 201 * cpu3/cpu4/codec3 139 * cpu3/cpu4/codec3 202 */ 140 */ 203 &fe00 &fe01 &be0 141 &fe00 &fe01 &be0 204 142 205 /* 143 /* 206 * [DPCM-Multi]: both 144 * [DPCM-Multi]: both FE / BE 207 * cpu5/cpu6/codec4/co 145 * cpu5/cpu6/codec4/codec5 208 */ 146 */ 209 &fe10 &fe11 &be1 147 &fe10 &fe11 &be1 210 148 211 /* 149 /* 212 * [Codec2Codec]: cpu 150 * [Codec2Codec]: cpu side only 213 * codec6/codec7 151 * codec6/codec7 214 */ 152 */ 215 &c2c 153 &c2c 216 154 217 /* 155 /* 218 * [Codec2Codec-Multi] 156 * [Codec2Codec-Multi]: cpu side only 219 * codec8/codec9/codec 157 * codec8/codec9/codec10/codec11 220 */ 158 */ 221 &c2c_m 159 &c2c_m 222 >; 160 >; 223 161 224 multi { 162 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 { 163 ports@0 { 237 reg = <0>; !! 164 /* [Multi-CPU] */ 238 #address-cells !! 165 mcpu0: port@0 { mcpu0_ep: endpoint { remote-endpoint = <&mcodec0_ep>; }; }; 239 #size-cells = !! 166 port@1 { mcpu1_ep: endpoint { remote-endpoint = <&cpu1_ep>; }; }; 240 mcpu0: port@0 { reg = !! 167 port@2 { mcpu2_ep: endpoint { remote-endpoint = <&cpu2_ep>; }; }; 241 port@1 { reg = << 242 port@2 { reg = << 243 }; 168 }; 244 169 245 /* !! 170 /* [Multi-Codec] */ 246 * [Multi-Codec-0] << 247 * << 248 * +---+ << 249 * cpu1 <--|A X|<- << 250 * cpu2 <--|B | << 251 * +---+ << 252 */ << 253 ports@1 { 171 ports@1 { 254 reg = <1>; !! 172 port@0 { mcodec0_ep: endpoint { remote-endpoint = <&mcpu0_ep>; }; }; 255 #address-cells !! 173 port@1 { mcodec1_ep: endpoint { remote-endpoint = <&codec1_ep>; }; }; 256 #size-cells = !! 174 port@2 { mcodec2_ep: endpoint { remote-endpoint = <&codec2_ep>; }; }; 257 port@0 { reg = << 258 port@1 { reg = << 259 port@2 { reg = << 260 }; 175 }; 261 176 262 /* !! 177 /* [DPCM-Multi]::BE */ 263 * [DPCM-Multi]::BE << 264 * << 265 * FE << 266 * **** << 267 * cpu5 <-@--* *- << 268 * cpu6 <-@--* * << 269 * **** << 270 */ << 271 ports@2 { 178 ports@2 { 272 reg = <2>; !! 179 port@0 { mbe_ep: endpoint { remote-endpoint = <&be10_ep>; }; }; 273 #address-cells !! 180 port@1 { mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; }; }; 274 #size-cells = !! 181 port@2 { mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; }; }; 275 port@0 { reg = << 276 port@1 { reg = << 277 port@2 { reg = << 278 }; 182 }; 279 183 280 /* !! 184 /* [Codec2Codec-Multi]::CPU */ 281 * [Codec2Codec-Multi] << 282 * << 283 * +---+ << 284 * +-@->|X A|- << 285 * | | B|- << 286 * | +---+ << 287 * | +---+ << 288 * +--->|x a|- << 289 * | b|- << 290 * +---+ << 291 */ << 292 ports@3 { 185 ports@3 { 293 reg = <3>; !! 186 port@0 { mc2c0_ep: endpoint { remote-endpoint = <&c2cmf_ep>; }; }; 294 #address-cells !! 187 port@1 { mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; }; }; 295 #size-cells = !! 188 port@2 { mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; }; }; 296 port@0 { reg = << 297 port@1 { reg = << 298 port@2 { reg = << 299 }; 189 }; 300 190 301 /* !! 191 /* [Codec2Codec-Multi]::Codec */ 302 * [Codec2Codec-Multi] << 303 * << 304 * +---+ << 305 * +-@->|X A|- << 306 * | | B|- << 307 * | +---+ << 308 * | +---+ << 309 * +--->|x a|- << 310 * | b|- << 311 * +---+ << 312 */ << 313 ports@4 { 192 ports@4 { 314 reg = <4>; !! 193 port@0 { mc2c1_ep: endpoint { remote-endpoint = <&c2cmb_ep>; }; }; 315 #address-cells !! 194 port@1 { mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; }; }; 316 #size-cells = !! 195 port@2 { mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; }; }; 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 }; 196 }; 482 }; 197 }; 483 198 484 dpcm { 199 dpcm { 485 #address-cells = <1>; << 486 #size-cells = <0>; << 487 << 488 ports@0 { 200 ports@0 { 489 reg = <0>; !! 201 /* [DPCM]::FE */ >> 202 fe00: port@0 { fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; }; >> 203 fe01: port@1 { fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; }; 490 204 491 #address-cells !! 205 /* [DPCM-Multi]::FE */ 492 #size-cells = !! 206 fe10: port@2 { fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; }; 493 /* !! 207 fe11: port@3 { fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; }; 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 }; 208 }; 517 209 518 ports@1 { 210 ports@1 { 519 reg = <1>; !! 211 /* [DPCM]::BE */ >> 212 be0: port@0 { be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; }; 520 213 521 #address-cells !! 214 /* [DPCM-Multi]::BE */ 522 #size-cells = !! 215 be1: port@1 { be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; }; 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 }; 216 }; 545 }; 217 }; 546 218 547 codec2codec { 219 codec2codec { 548 #address-cells = <1>; !! 220 /* [Codec2Codec] */ 549 #size-cells = <0>; << 550 /* << 551 * [Codec2Codec] << 552 * << 553 * +-@(c2c)-> cod << 554 * | << 555 * +--------> cod << 556 */ << 557 ports@0 { 221 ports@0 { 558 reg = <0>; << 559 << 560 #address-cells << 561 #size-cells = << 562 << 563 /* use default 222 /* use default settings */ 564 c2c: port@0 { reg = !! 223 c2c: port@0 { c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; }; 565 port@1 { reg = !! 224 port@1 { c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; }; 566 }; 225 }; 567 226 568 /* !! 227 /* [Codec2Codec-Multi] */ 569 * [Codec2Codec-Multi] << 570 * << 571 * << 572 * +-@(c2c_m)- << 573 * | << 574 * | << 575 * | << 576 * +---------- << 577 * << 578 * << 579 */ << 580 ports@1 { 228 ports@1 { 581 reg = <1>; << 582 << 583 #address-cells << 584 #size-cells = << 585 << 586 /* use origina 229 /* use original settings */ 587 rate = <48000> 230 rate = <48000>; 588 c2c_m: port@0 { reg = !! 231 c2c_m: port@0 { c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; }; 589 port@1 { reg = !! 232 port@1 { c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; }; 590 }; 233 }; 591 }; 234 }; 592 }; 235 }; 593 236 594 test_cpu { 237 test_cpu { 595 /* 238 /* 596 * update compatible to indica 239 * update compatible to indicate more detail behaviour 597 * if you want. see test-compa 240 * if you want. see test-compatible for more detail. 598 * 241 * 599 * ex) 242 * ex) 600 * - compatible = "test-c 243 * - compatible = "test-cpu"; 601 * + compatible = "test-c 244 * + compatible = "test-cpu-verbose"; 602 */ 245 */ 603 compatible = "test-cpu"; 246 compatible = "test-cpu"; 604 ports { 247 ports { 605 #address-cells = <1>; << 606 #size-cells = <0>; << 607 << 608 bitclock-master; 248 bitclock-master; 609 frame-master; 249 frame-master; 610 /* [Normal] */ 250 /* [Normal] */ 611 cpu0: port@0 { reg = < !! 251 cpu0: port@0 { cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; }; 612 252 613 /* [Multi-CPU-0] */ !! 253 /* [Multi-CPU] */ 614 port@1 { reg = < !! 254 port@1 { cpu1_ep: endpoint { remote-endpoint = <&mcpu1_ep>; }; }; 615 port@2 { reg = < !! 255 port@2 { cpu2_ep: endpoint { remote-endpoint = <&mcpu2_ep>; }; }; 616 256 617 /* [DPCM]::FE */ 257 /* [DPCM]::FE */ 618 port@3 { reg = < !! 258 port@3 { cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; }; 619 port@4 { reg = < !! 259 port@4 { cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; }; 620 260 621 /* [DPCM-Multi]::FE */ 261 /* [DPCM-Multi]::FE */ 622 port@5 { reg = < !! 262 port@5 { cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; }; 623 port@6 { reg = < !! 263 port@6 { cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; }; 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 }; 264 }; 636 }; 265 }; 637 266 638 test_codec { 267 test_codec { 639 /* 268 /* 640 * update compatible to indica 269 * update compatible to indicate more detail behaviour 641 * if you want. see test-compa 270 * if you want. see test-compatible for more detail. 642 * 271 * 643 * ex) 272 * ex) 644 * - compatible = "test-c 273 * - compatible = "test-codec"; 645 * + compatible = "test-c 274 * + compatible = "test-codec-verbose"; 646 */ 275 */ 647 compatible = "test-codec"; 276 compatible = "test-codec"; 648 ports { 277 ports { 649 #address-cells = <1>; << 650 #size-cells = <0>; << 651 << 652 /* 278 /* 653 * prefix can be added 279 * prefix can be added to *component*, 654 * see audio-graph-car 280 * see audio-graph-card2::routing 655 */ 281 */ 656 prefix = "TC"; 282 prefix = "TC"; 657 283 658 /* [Normal] */ 284 /* [Normal] */ 659 port@0 { reg = <0>; c !! 285 port@0 { codec0_ep: endpoint { remote-endpoint = <&cpu0_ep>; }; }; 660 286 661 /* [Multi-Codec-0] */ !! 287 /* [Multi-Codec] */ 662 port@1 { reg = <1>; c !! 288 port@1 { codec1_ep: endpoint { remote-endpoint = <&mcodec1_ep>; }; }; 663 port@2 { reg = <2>; c !! 289 port@2 { codec2_ep: endpoint { remote-endpoint = <&mcodec2_ep>; }; }; 664 290 665 /* [DPCM]::BE */ 291 /* [DPCM]::BE */ 666 port@3 { 292 port@3 { 667 convert-rate = 293 convert-rate = <44100>; 668 reg = <3>; cod !! 294 codec3_ep: endpoint { remote-endpoint = <&be00_ep>; }; 669 }; 295 }; 670 296 671 /* [DPCM-Multi]::BE */ 297 /* [DPCM-Multi]::BE */ 672 port@4 { reg = <4>; c !! 298 port@4 { codec4_ep: endpoint { remote-endpoint = <&mbe1_ep>; }; }; 673 port@5 { reg = <5>; c !! 299 port@5 { codec5_ep: endpoint { remote-endpoint = <&mbe2_ep>; }; }; 674 300 675 /* [Codec2Codec] */ 301 /* [Codec2Codec] */ 676 port@6 { bitclock-mas 302 port@6 { bitclock-master; 677 frame-master 303 frame-master; 678 reg = <6>; c !! 304 codec6_ep: endpoint { remote-endpoint = <&c2cf_ep>; }; }; 679 port@7 { reg = <7>; c !! 305 port@7 { codec7_ep: endpoint { remote-endpoint = <&c2cb_ep>; }; }; 680 306 681 /* [Codec2Codec-Multi] 307 /* [Codec2Codec-Multi] */ 682 port@8 { bitclock-mas 308 port@8 { bitclock-master; 683 frame-master 309 frame-master; 684 reg = <8>; !! 310 codec8_ep: endpoint { remote-endpoint = <&mc2c00_ep>; }; }; 685 port@9 { reg = <9>; !! 311 port@9 { codec9_ep: endpoint { remote-endpoint = <&mc2c01_ep>; }; }; 686 port@a { reg = <10>; !! 312 port@10 { codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; }; 687 port@b { reg = <11>; !! 313 port@11 { codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; }; 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 }; 314 }; 701 }; 315 }; 702 }; 316 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.