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 * [Semi-Multi] 53 * 46 * 54 * CPU:Codec = 1:N 47 * CPU:Codec = 1:N 55 * 48 * 56 * +-+ 49 * +-+ 57 * cpu7 <-@------->| |-> codec12 50 * cpu7 <-@------->| |-> codec12 58 * | |-> codec13 51 * | |-> codec13 59 * +-+ 52 * +-+ 60 * 53 * 61 * [Multi-CPU/Codec-0] !! 54 * [Multi-CPU/Codec] 62 * +-+ +-+ 55 * +-+ +-+ 63 * cpu1 <--| |<-@--------->| |-> c 56 * cpu1 <--| |<-@--------->| |-> codec1 64 * cpu2 <--| | | |-> 57 * cpu2 <--| | | |-> codec2 65 * +-+ +-+ 58 * +-+ +-+ 66 * 59 * 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] 60 * [DPCM] 88 * 61 * 89 * CPU3/CPU4 are converting rate 62 * CPU3/CPU4 are converting rate to 44100 90 * 63 * 91 * FE BE 64 * FE BE 92 * **** 65 * **** 93 * cpu3 <-@--* *--@-> codec3 66 * cpu3 <-@--* *--@-> codec3 94 * cpu4 <-@--* * (44.1kHz) 67 * cpu4 <-@--* * (44.1kHz) 95 * **** 68 * **** 96 * 69 * 97 * [DPCM-Multi] 70 * [DPCM-Multi] 98 * 71 * 99 * --NOTE-- 72 * --NOTE-- 100 * Multi-FE is not supported by ASoC. 73 * Multi-FE is not supported by ASoC. 101 * 74 * 102 * FE BE 75 * FE BE 103 * **** +-+ 76 * **** +-+ 104 * cpu5 <-@--* *--@-> | | -> code 77 * cpu5 <-@--* *--@-> | | -> codec4 105 * cpu6 <-@--* * | | -> code 78 * cpu6 <-@--* * | | -> codec5 106 * **** +-+ 79 * **** +-+ 107 * 80 * 108 * [Codec2Codec] 81 * [Codec2Codec] 109 * +-@-> codec 82 * +-@-> codec6 110 * | 83 * | 111 * +---> codec 84 * +---> codec7 112 * 85 * 113 * [Codec2Codec-Multi] 86 * [Codec2Codec-Multi] 114 * 87 * 115 * --NOTE-- 88 * --NOTE-- 116 * Multi connect N:M is not supported 89 * Multi connect N:M is not supported by ASoC. 117 * 90 * 118 * +-+ 91 * +-+ 119 * +-@->| |-> 92 * +-@->| |-> codec8 120 * | | |-> 93 * | | |-> codec9 121 * | +-+ 94 * | +-+ 122 * | +-+ 95 * | +-+ 123 * +--->| |-> 96 * +--->| |-> codec10 124 * | |-> 97 * | |-> codec11 125 * +-+ 98 * +-+ 126 */ 99 */ 127 audio-graph-card2-custom-sample { 100 audio-graph-card2-custom-sample { 128 /* 101 /* 129 * You can use audio-graph-car 102 * You can use audio-graph-card2 directly by using 130 * 103 * 131 * compatible = "audio-graph-c 104 * compatible = "audio-graph-card2"; 132 */ 105 */ 133 compatible = "audio-graph-card 106 compatible = "audio-graph-card2-custom-sample"; 134 107 135 /* for [DPCM] 108 /* for [DPCM] */ 136 /* BE 109 /* BE FE */ 137 routing = "TC DAI3 Playback", 110 routing = "TC DAI3 Playback", "DAI3 Playback", 138 "TC DAI3 Playback", 111 "TC DAI3 Playback", "DAI4 Playback", 139 "DAI3 Capture", 112 "DAI3 Capture", "TC DAI3 Capture", 140 "DAI4 Capture", 113 "DAI4 Capture", "TC DAI3 Capture", 141 /* for [DPCM-Multi] 114 /* for [DPCM-Multi] */ 142 /* BE 115 /* BE FE */ 143 "TC DAI4 Playback", 116 "TC DAI4 Playback", "DAI5 Playback", 144 "TC DAI5 Playback", 117 "TC DAI5 Playback", "DAI5 Playback", 145 "TC DAI4 Playback", 118 "TC DAI4 Playback", "DAI6 Playback", 146 "TC DAI5 Playback", 119 "TC DAI5 Playback", "DAI6 Playback", 147 "DAI5 Capture", 120 "DAI5 Capture", "TC DAI4 Capture", 148 "DAI5 Capture", 121 "DAI5 Capture", "TC DAI5 Capture", 149 "DAI6 Capture", 122 "DAI6 Capture", "TC DAI4 Capture", 150 "DAI6 Capture", 123 "DAI6 Capture", "TC DAI5 Capture", 151 /* for [Codec2Codec] * 124 /* for [Codec2Codec] */ 152 "TC OUT", 125 "TC OUT", "TC DAI7 Playback", 153 "TC DAI6 Capture", 126 "TC DAI6 Capture", "TC IN", 154 /* for [Codec2Codec-Mu 127 /* for [Codec2Codec-Multi] */ 155 "TC OUT", 128 "TC OUT", "TC DAI10 Playback", 156 "TC DAI8 Capture", 129 "TC DAI8 Capture", "TC IN", 157 "TC OUT", 130 "TC OUT", "TC DAI11 Playback", 158 "TC DAI9 Capture", 131 "TC DAI9 Capture", "TC IN"; 159 132 160 links = < 133 links = < 161 /* 134 /* 162 * [Normal]: cpu side 135 * [Normal]: cpu side only 163 * cpu0/codec0 136 * cpu0/codec0 164 */ 137 */ 165 &cpu0 138 &cpu0 166 139 167 /* !! 140 /* [Semi-Multi] */ 168 * [Semi-Multi] << 169 * cpu7/codec12/codec1 << 170 */ << 171 &sm0 141 &sm0 172 142 173 /* 143 /* 174 * [Multi-CPU/Codec-0] !! 144 * [Multi-CPU/Codec]: cpu side only 175 * cpu1/cpu2/codec1/co 145 * cpu1/cpu2/codec1/codec2 176 */ 146 */ 177 &mcpu0 147 &mcpu0 178 148 179 /* 149 /* 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 150 * [DPCM]: both FE / BE 201 * cpu3/cpu4/codec3 151 * cpu3/cpu4/codec3 202 */ 152 */ 203 &fe00 &fe01 &be0 153 &fe00 &fe01 &be0 204 154 205 /* 155 /* 206 * [DPCM-Multi]: both 156 * [DPCM-Multi]: both FE / BE 207 * cpu5/cpu6/codec4/co 157 * cpu5/cpu6/codec4/codec5 208 */ 158 */ 209 &fe10 &fe11 &be1 159 &fe10 &fe11 &be1 210 160 211 /* 161 /* 212 * [Codec2Codec]: cpu 162 * [Codec2Codec]: cpu side only 213 * codec6/codec7 163 * codec6/codec7 214 */ 164 */ 215 &c2c 165 &c2c 216 166 217 /* 167 /* 218 * [Codec2Codec-Multi] 168 * [Codec2Codec-Multi]: cpu side only 219 * codec8/codec9/codec 169 * codec8/codec9/codec10/codec11 220 */ 170 */ 221 &c2c_m 171 &c2c_m 222 >; 172 >; 223 173 224 multi { 174 multi { 225 #address-cells = <1>; 175 #address-cells = <1>; 226 #size-cells = <0>; 176 #size-cells = <0>; 227 177 228 /* << 229 * [Multi-CPU-0] << 230 * << 231 * +---+ << 232 * cpu1 <--|A X|<- << 233 * cpu2 <--|B | << 234 * +---+ << 235 */ << 236 ports@0 { 178 ports@0 { 237 reg = <0>; 179 reg = <0>; 238 #address-cells 180 #address-cells = <1>; 239 #size-cells = 181 #size-cells = <0>; 240 mcpu0: port@0 { reg = !! 182 /* [Multi-CPU] */ 241 port@1 { reg = !! 183 mcpu0: port@0 { reg = <0>; mcpu0_ep: endpoint { remote-endpoint = <&mcodec0_ep>; }; }; 242 port@2 { reg = !! 184 port@1 { reg = <1>; mcpu1_ep: endpoint { remote-endpoint = <&cpu1_ep>; }; }; >> 185 port@2 { reg = <2>; mcpu2_ep: endpoint { remote-endpoint = <&cpu2_ep>; }; }; 243 }; 186 }; 244 187 245 /* !! 188 /* [Multi-Codec] */ 246 * [Multi-Codec-0] << 247 * << 248 * +---+ << 249 * cpu1 <--|A X|<- << 250 * cpu2 <--|B | << 251 * +---+ << 252 */ << 253 ports@1 { 189 ports@1 { 254 reg = <1>; 190 reg = <1>; 255 #address-cells 191 #address-cells = <1>; 256 #size-cells = 192 #size-cells = <0>; 257 port@0 { reg = !! 193 port@0 { reg = <0>; mcodec0_ep: endpoint { remote-endpoint = <&mcpu0_ep>; }; }; 258 port@1 { reg = !! 194 port@1 { reg = <1>; mcodec1_ep: endpoint { remote-endpoint = <&codec1_ep>; }; }; 259 port@2 { reg = !! 195 port@2 { reg = <2>; mcodec2_ep: endpoint { remote-endpoint = <&codec2_ep>; }; }; 260 }; 196 }; 261 197 262 /* !! 198 /* [DPCM-Multi]::BE */ 263 * [DPCM-Multi]::BE << 264 * << 265 * FE << 266 * **** << 267 * cpu5 <-@--* *- << 268 * cpu6 <-@--* * << 269 * **** << 270 */ << 271 ports@2 { 199 ports@2 { 272 reg = <2>; 200 reg = <2>; 273 #address-cells 201 #address-cells = <1>; 274 #size-cells = 202 #size-cells = <0>; 275 port@0 { reg = !! 203 port@0 { reg = <0>; mbe_ep: endpoint { remote-endpoint = <&be10_ep>; }; }; 276 port@1 { reg = !! 204 port@1 { reg = <1>; mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; }; }; 277 port@2 { reg = !! 205 port@2 { reg = <2>; mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; }; }; 278 }; 206 }; 279 207 280 /* !! 208 /* [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 { 209 ports@3 { 293 reg = <3>; 210 reg = <3>; 294 #address-cells 211 #address-cells = <1>; 295 #size-cells = 212 #size-cells = <0>; 296 port@0 { reg = !! 213 port@0 { reg = <0>; mc2c0_ep: endpoint { remote-endpoint = <&c2cmf_ep>; }; }; 297 port@1 { reg = !! 214 port@1 { reg = <1>; mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; }; }; 298 port@2 { reg = !! 215 port@2 { reg = <2>; mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; }; }; 299 }; 216 }; 300 217 301 /* !! 218 /* [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 { 219 ports@4 { 314 reg = <4>; 220 reg = <4>; 315 #address-cells 221 #address-cells = <1>; 316 #size-cells = 222 #size-cells = <0>; 317 port@0 { reg = !! 223 port@0 { reg = <0>; mc2c1_ep: endpoint { remote-endpoint = <&c2cmb_ep>; }; }; 318 port@1 { reg = !! 224 port@1 { reg = <1>; mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; }; }; 319 port@2 { reg = !! 225 port@2 { reg = <2>; mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; }; }; 320 }; 226 }; 321 227 322 /* !! 228 /* [Semi-Multi] */ 323 * [Semi-Multi] << 324 * << 325 * << 326 * cpu7 <-@------- << 327 * << 328 * << 329 */ << 330 ports@5 { 229 ports@5 { 331 reg = <5>; 230 reg = <5>; 332 #address-cells 231 #address-cells = <1>; 333 #size-cells = 232 #size-cells = <0>; 334 port@0 { reg = !! 233 port@0 { reg = <0>; smcodec0_ep: endpoint { remote-endpoint = <&cpu7_ep>; }; }; 335 port@1 { reg = !! 234 port@1 { reg = <1>; smcodec1_ep: endpoint { remote-endpoint = <&codec12_ep>; }; }; 336 port@2 { reg = !! 235 port@2 { reg = <2>; smcodec2_ep: endpoint { remote-endpoint = <&codec13_ep>; }; }; 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 }; 236 }; 482 }; 237 }; 483 238 484 dpcm { 239 dpcm { 485 #address-cells = <1>; 240 #address-cells = <1>; 486 #size-cells = <0>; 241 #size-cells = <0>; 487 242 488 ports@0 { 243 ports@0 { 489 reg = <0>; 244 reg = <0>; 490 245 491 #address-cells 246 #address-cells = <1>; 492 #size-cells = 247 #size-cells = <0>; 493 /* !! 248 /* [DPCM]::FE */ 494 * [DPCM]::FE << 495 * << 496 * FE << 497 * << 498 * cpu3 <- << 499 * cpu4 < << 500 * << 501 */ << 502 fe00: port@0 { reg = 249 fe00: port@0 { reg = <0>; fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; }; 503 fe01: port@1 { reg = 250 fe01: port@1 { reg = <1>; fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; }; 504 251 505 /* !! 252 /* [DPCM-Multi]::FE */ 506 * [DPCM-Multi << 507 * << 508 * << 509 * << 510 * cpu5 <- << 511 * cpu6 <- << 512 * << 513 */ << 514 fe10: port@2 { reg = 253 fe10: port@2 { reg = <2>; fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; }; 515 fe11: port@3 { reg = 254 fe11: port@3 { reg = <3>; fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; }; 516 }; 255 }; 517 256 518 ports@1 { 257 ports@1 { 519 reg = <1>; 258 reg = <1>; 520 259 521 #address-cells 260 #address-cells = <1>; 522 #size-cells = 261 #size-cells = <0>; 523 /* !! 262 /* [DPCM]::BE */ 524 * [DPCM]::BE << 525 * << 526 * FE << 527 * << 528 * cpu3 <- << 529 * cpu4 < << 530 * << 531 */ << 532 be0: port@0 { reg = 263 be0: port@0 { reg = <0>; be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; }; 533 264 534 /* !! 265 /* [DPCM-Multi]::BE */ 535 * [DPCM-Multi << 536 * << 537 * << 538 * << 539 * cpu5 <- << 540 * cpu6 <- << 541 * << 542 */ << 543 be1: port@1 { reg = 266 be1: port@1 { reg = <1>; be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; }; 544 }; 267 }; 545 }; 268 }; 546 269 547 codec2codec { 270 codec2codec { 548 #address-cells = <1>; 271 #address-cells = <1>; 549 #size-cells = <0>; 272 #size-cells = <0>; 550 /* !! 273 /* [Codec2Codec] */ 551 * [Codec2Codec] << 552 * << 553 * +-@(c2c)-> cod << 554 * | << 555 * +--------> cod << 556 */ << 557 ports@0 { 274 ports@0 { 558 reg = <0>; 275 reg = <0>; 559 276 560 #address-cells 277 #address-cells = <1>; 561 #size-cells = 278 #size-cells = <0>; 562 279 563 /* use default 280 /* use default settings */ 564 c2c: port@0 { reg = 281 c2c: port@0 { reg = <0>; c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; }; 565 port@1 { reg = 282 port@1 { reg = <1>; c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; }; 566 }; 283 }; 567 284 568 /* !! 285 /* [Codec2Codec-Multi] */ 569 * [Codec2Codec-Multi] << 570 * << 571 * << 572 * +-@(c2c_m)- << 573 * | << 574 * | << 575 * | << 576 * +---------- << 577 * << 578 * << 579 */ << 580 ports@1 { 286 ports@1 { 581 reg = <1>; 287 reg = <1>; 582 288 583 #address-cells 289 #address-cells = <1>; 584 #size-cells = 290 #size-cells = <0>; 585 291 586 /* use origina 292 /* use original settings */ 587 rate = <48000> 293 rate = <48000>; 588 c2c_m: port@0 { reg = 294 c2c_m: port@0 { reg = <0>; c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; }; 589 port@1 { reg = 295 port@1 { reg = <1>; c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; }; 590 }; 296 }; 591 }; 297 }; 592 }; 298 }; 593 299 594 test_cpu { 300 test_cpu { 595 /* 301 /* 596 * update compatible to indica 302 * update compatible to indicate more detail behaviour 597 * if you want. see test-compa 303 * if you want. see test-compatible for more detail. 598 * 304 * 599 * ex) 305 * ex) 600 * - compatible = "test-c 306 * - compatible = "test-cpu"; 601 * + compatible = "test-c 307 * + compatible = "test-cpu-verbose"; 602 */ 308 */ 603 compatible = "test-cpu"; 309 compatible = "test-cpu"; 604 ports { 310 ports { 605 #address-cells = <1>; 311 #address-cells = <1>; 606 #size-cells = <0>; 312 #size-cells = <0>; 607 313 608 bitclock-master; 314 bitclock-master; 609 frame-master; 315 frame-master; 610 /* [Normal] */ 316 /* [Normal] */ 611 cpu0: port@0 { reg = < 317 cpu0: port@0 { reg = <0>; cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; }; 612 318 613 /* [Multi-CPU-0] */ !! 319 /* [Multi-CPU] */ 614 port@1 { reg = < !! 320 port@1 { reg = <1>; cpu1_ep: endpoint { remote-endpoint = <&mcpu1_ep>; }; }; 615 port@2 { reg = < !! 321 port@2 { reg = <2>; cpu2_ep: endpoint { remote-endpoint = <&mcpu2_ep>; }; }; 616 322 617 /* [DPCM]::FE */ 323 /* [DPCM]::FE */ 618 port@3 { reg = < 324 port@3 { reg = <3>; cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; }; 619 port@4 { reg = < 325 port@4 { reg = <4>; cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; }; 620 326 621 /* [DPCM-Multi]::FE */ 327 /* [DPCM-Multi]::FE */ 622 port@5 { reg = < 328 port@5 { reg = <5>; cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; }; 623 port@6 { reg = < 329 port@6 { reg = <6>; cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; }; 624 330 625 /* [Semi-Multi] */ 331 /* [Semi-Multi] */ 626 sm0: port@7 { reg = < 332 sm0: port@7 { reg = <7>; cpu7_ep: endpoint { remote-endpoint = <&smcodec0_ep>; }; }; 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 }; 333 }; 636 }; 334 }; 637 335 638 test_codec { 336 test_codec { 639 /* 337 /* 640 * update compatible to indica 338 * update compatible to indicate more detail behaviour 641 * if you want. see test-compa 339 * if you want. see test-compatible for more detail. 642 * 340 * 643 * ex) 341 * ex) 644 * - compatible = "test-c 342 * - compatible = "test-codec"; 645 * + compatible = "test-c 343 * + compatible = "test-codec-verbose"; 646 */ 344 */ 647 compatible = "test-codec"; 345 compatible = "test-codec"; 648 ports { 346 ports { 649 #address-cells = <1>; 347 #address-cells = <1>; 650 #size-cells = <0>; 348 #size-cells = <0>; 651 349 652 /* 350 /* 653 * prefix can be added 351 * prefix can be added to *component*, 654 * see audio-graph-car 352 * see audio-graph-card2::routing 655 */ 353 */ 656 prefix = "TC"; 354 prefix = "TC"; 657 355 658 /* [Normal] */ 356 /* [Normal] */ 659 port@0 { reg = <0>; c 357 port@0 { reg = <0>; codec0_ep: endpoint { remote-endpoint = <&cpu0_ep>; }; }; 660 358 661 /* [Multi-Codec-0] */ !! 359 /* [Multi-Codec] */ 662 port@1 { reg = <1>; c !! 360 port@1 { reg = <1>; codec1_ep: endpoint { remote-endpoint = <&mcodec1_ep>; }; }; 663 port@2 { reg = <2>; c !! 361 port@2 { reg = <2>; codec2_ep: endpoint { remote-endpoint = <&mcodec2_ep>; }; }; 664 362 665 /* [DPCM]::BE */ 363 /* [DPCM]::BE */ 666 port@3 { 364 port@3 { 667 convert-rate = 365 convert-rate = <44100>; 668 reg = <3>; cod 366 reg = <3>; codec3_ep: endpoint { remote-endpoint = <&be00_ep>; }; 669 }; 367 }; 670 368 671 /* [DPCM-Multi]::BE */ 369 /* [DPCM-Multi]::BE */ 672 port@4 { reg = <4>; c 370 port@4 { reg = <4>; codec4_ep: endpoint { remote-endpoint = <&mbe1_ep>; }; }; 673 port@5 { reg = <5>; c 371 port@5 { reg = <5>; codec5_ep: endpoint { remote-endpoint = <&mbe2_ep>; }; }; 674 372 675 /* [Codec2Codec] */ 373 /* [Codec2Codec] */ 676 port@6 { bitclock-mas 374 port@6 { bitclock-master; 677 frame-master 375 frame-master; 678 reg = <6>; c 376 reg = <6>; codec6_ep: endpoint { remote-endpoint = <&c2cf_ep>; }; }; 679 port@7 { reg = <7>; c 377 port@7 { reg = <7>; codec7_ep: endpoint { remote-endpoint = <&c2cb_ep>; }; }; 680 378 681 /* [Codec2Codec-Multi] 379 /* [Codec2Codec-Multi] */ 682 port@8 { bitclock-mas 380 port@8 { bitclock-master; 683 frame-master 381 frame-master; 684 reg = <8>; 382 reg = <8>; codec8_ep: endpoint { remote-endpoint = <&mc2c00_ep>; }; }; 685 port@9 { reg = <9>; 383 port@9 { reg = <9>; codec9_ep: endpoint { remote-endpoint = <&mc2c01_ep>; }; }; 686 port@a { reg = <10>; 384 port@a { reg = <10>; codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; }; 687 port@b { reg = <11>; 385 port@b { reg = <11>; codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; }; 688 386 689 /* [Semi-Multi] */ 387 /* [Semi-Multi] */ 690 port@c { reg = <12>; c 388 port@c { reg = <12>; codec12_ep: endpoint { remote-endpoint = <&smcodec1_ep>; }; }; 691 port@d { reg = <13>; c 389 port@d { reg = <13>; codec13_ep: endpoint { remote-endpoint = <&smcodec2_ep>; }; }; 692 390 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 }; 391 }; 701 }; 392 }; 702 }; 393 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.