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