brintos

brintos / linux-shallow public Read only

0
0
Text · 19.5 KiB · 9efd312 Raw
703 lines · plain
1// SPDX-License-Identifier: GPL-2.02/*3 * audio-graph-card2-custom-sample.dtsi4 *5 * Copyright (C) 2020 Renesas Electronics Corp.6 * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>7 *8 * This sample indicates how to use audio-graph-card2 and its9 * custom driver. "audio-graph-card2-custom-sample" is the custome driver10 * which is using audio-graph-card2.11 *12 * You can easily use this sample by adding below line on your DT file,13 * and add new CONFIG to your .config.14 *15 *	#include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi"16 *17 *	CONFIG_SND_AUDIO_GRAPH_CARD218 *	CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE19 *	CONFIG_SND_TEST_COMPONENT20 *21 *22 * You can indicate more detail each device behavior as debug if you modify23 * "compatible" on each test-component. see below24 *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-verbose";34 *		...35 *	};36 *37 *38 * Below sample doesn't use "format" property,39 * because test-component driver (test-cpu/test-codec) is supporting40 * snd_soc_dai_ops :: .auto_selectable_formats.41 * see42 *	snd_soc_runtime_get_dai_fmt()43 *	linux/sound/soc/generic/test-component.c :: test_dai_formats44 */45/ {46	/*47	 * @ : used at links48	 *49	 * [Normal]50	 *	cpu0 <-@-----------------> codec051	 *52	 * [Semi-Multi]53	 *54	 * CPU:Codec = 1:N55	 *56	 *			+-+57	 *	cpu7 <-@------->| |-> codec1258	 *			| |-> codec1359	 *			+-+60	 *61	 * [Multi-CPU/Codec-0]62	 *		+-+		+-+63	 *	cpu1 <--| |<-@--------->| |-> codec164	 *	cpu2 <--| |		| |-> codec265	 *		+-+		+-+66	 *67	 * [Multi-CPU/Codec-1]68	 *69	 *		+-+		+-+70	 *		| |<-@--------->| |71	 *		| |		| |72	 *	cpu8 <--| |<----------->| |-> codec1473	 *	cpu9 <--| |<---+------->| |-> codec1574	 *		+-+	\------>| |-> codec1675	 *				+-+76	 *77	 * [Multi-CPU/Codec-2]78	 *79	 *		+-+		+-+80	 *		| |<-@--------->| |81	 *		| |		| |82	 *	cpu10 <-| |<----------->| |-> codec1783	 *	cpu11 <-| |<-----+----->| |-> codec1884	 *	cpu12 <-| |<----/	+-+85	 *		+-+86	 *87	 * [DPCM]88	 *89	 *	CPU3/CPU4 are converting rate to 4410090	 *91	 *	FE		BE92	 *		  ****93	 *	cpu3 <-@--*  *--@-> codec394	 *	cpu4 <-@--*  *  (44.1kHz)95	 *		  ****96	 *97	 * [DPCM-Multi]98	 *99	 * --NOTE--100	 * Multi-FE is not supported by ASoC.101	 *102	 *	FE		BE103	 *		  ****	    +-+104	 *	cpu5 <-@--*  *--@-> | | -> codec4105	 *	cpu6 <-@--*  *	    | | -> codec5106	 *		  ****	    +-+107	 *108	 * [Codec2Codec]109	 *			   +-@-> codec6110	 *			   |111	 *			   +---> codec7112	 *113	 * [Codec2Codec-Multi]114	 *115	 * --NOTE--116	 * Multi connect N:M is not supported by ASoC.117	 *118	 *				+-+119	 *			   +-@->| |-> codec8120	 *			   |	| |-> codec9121	 *			   |	+-+122	 *			   |	+-+123	 *			   +--->| |-> codec10124	 *				| |-> codec11125	 *				+-+126	 */127	audio-graph-card2-custom-sample {128		/*129		 * You can use audio-graph-card2 directly by using130		 *131		 * compatible = "audio-graph-card2";132		 */133		compatible = "audio-graph-card2-custom-sample";134 135			/* for [DPCM]		   */136			/* BE			FE */137		routing = "TC DAI3 Playback",	"DAI3 Playback",138			  "TC DAI3 Playback",	"DAI4 Playback",139			  "DAI3 Capture",	"TC DAI3 Capture",140			  "DAI4 Capture",	"TC DAI3 Capture",141			/* for [DPCM-Multi]	   */142			/* BE			FE */143			  "TC DAI4 Playback",	"DAI5 Playback",144			  "TC DAI5 Playback",	"DAI5 Playback",145			  "TC DAI4 Playback",	"DAI6 Playback",146			  "TC DAI5 Playback",	"DAI6 Playback",147			  "DAI5 Capture",	"TC DAI4 Capture",148			  "DAI5 Capture",	"TC DAI5 Capture",149			  "DAI6 Capture",	"TC DAI4 Capture",150			  "DAI6 Capture",	"TC DAI5 Capture",151			/* for [Codec2Codec] */152			  "TC OUT",		"TC DAI7 Playback",153			  "TC DAI6 Capture",	"TC IN",154			/* for [Codec2Codec-Multi] */155			  "TC OUT",		"TC DAI10 Playback",156			  "TC DAI8 Capture",	"TC IN",157			  "TC OUT",		"TC DAI11 Playback",158			  "TC DAI9 Capture",	"TC IN";159 160		links = <161			/*162			 * [Normal]: cpu side only163			 * cpu0/codec0164			 */165			 &cpu0166 167			/*168			 * [Semi-Multi]169			 * cpu7/codec12/codec13170			 */171			&sm0172 173			/*174			 * [Multi-CPU/Codec-0]: cpu side only175			 * cpu1/cpu2/codec1/codec2176			 */177			 &mcpu0178 179			/*180			 * [Multi-CPU/Codec-1]: cpu side only181			 * cpu8/cpu9/codec14/codec15/codec16182			 *183			 * Because it will reach to the maximum of sound minor number,184			 * disable it so far.185			 * If you want to try it, please disable some other one instead.186			 */187			//&mcpu1188 189			/*190			 * [Multi-CPU/Codec-2]: cpu side only191			 * cpu10/cpu11/cpu12/codec17/codec18192			 *193			 * Because it will reach to the maximum of sound minor number,194			 * disable it so far.195			 * If you want to try it, please disable some other one instead.196			 */197			//&mcpu2198 199			/*200			 * [DPCM]: both FE / BE201			 * cpu3/cpu4/codec3202			 */203			 &fe00 &fe01 &be0204 205			/*206			 * [DPCM-Multi]: both FE / BE207			 * cpu5/cpu6/codec4/codec5208			 */209			 &fe10 &fe11 &be1210 211			/*212			 * [Codec2Codec]: cpu side only213			 * codec6/codec7214			 */215			 &c2c216 217			/*218			 * [Codec2Codec-Multi]: cpu side only219			 * codec8/codec9/codec10/codec11220			 */221			 &c2c_m222		>;223 224		multi {225			#address-cells = <1>;226			#size-cells = <0>;227 228			/*229			 * [Multi-CPU-0]230			 *231			 *		+---+		+---+232			 *	cpu1 <--|A X|<-@------->|x a|-> codec1233			 *	cpu2 <--|B  |		|  b|-> codec2234			 *		+---+		+---+235			 */236			ports@0 {237				reg = <0>;238				#address-cells = <1>;239				#size-cells = <0>;240			mcpu0:	port@0 { reg = <0>; mcpu00_ep: endpoint { remote-endpoint = <&mcodec00_ep>; };};/* (X) to pair */241				port@1 { reg = <1>; mcpu01_ep: endpoint { remote-endpoint = <&cpu1_ep>;     };};/* (A) Multi Element */242				port@2 { reg = <2>; mcpu02_ep: endpoint { remote-endpoint = <&cpu2_ep>;     };};/* (B) Multi Element */243			};244 245			/*246			 * [Multi-Codec-0]247			 *248			 *		+---+		+---+249			 *	cpu1 <--|A X|<-@------->|x a|-> codec1250			 *	cpu2 <--|B  |		|  b|-> codec2251			 *		+---+		+---+252			 */253			ports@1 {254				reg = <1>;255				#address-cells = <1>;256				#size-cells = <0>;257				port@0 { reg = <0>; mcodec00_ep: endpoint { remote-endpoint = <&mcpu00_ep>; };};/* (x) to pair */258				port@1 { reg = <1>; mcodec01_ep: endpoint { remote-endpoint = <&codec1_ep>; };};/* (a) Multi Element */259				port@2 { reg = <2>; mcodec02_ep: endpoint { remote-endpoint = <&codec2_ep>; };};/* (b) Multi Element */260			};261 262			/*263			 * [DPCM-Multi]::BE264			 *265			 *	FE			BE266			 *		  ****		+---+267			 *	cpu5 <-@--*  *-----@--->|x a|-> codec4268			 *	cpu6 <-@--*  *		|  b|-> codec5269			 *		  ****		+---+270			 */271			ports@2 {272				reg = <2>;273				#address-cells = <1>;274				#size-cells = <0>;275				port@0 { reg = <0>; mbe_ep:  endpoint { remote-endpoint = <&be10_ep>;   };};/* (x) to pair */276				port@1 { reg = <1>; mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; };};/* (a) Multi Element */277				port@2 { reg = <2>; mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; };};/* (b) Multi Element */278			};279 280			/*281			 * [Codec2Codec-Multi]::CPU282			 *283			 *		+---+284			 *	   +-@->|X A|-> codec8285			 *	   |	|  B|-> codec9286			 *	   |	+---+287			 *	   |	+---+288			 *	   +--->|x a|-> codec10289			 *		|  b|-> codec11290			 *		+---+291			 */292			ports@3 {293				reg = <3>;294				#address-cells = <1>;295				#size-cells = <0>;296				port@0 { reg = <0>; mc2c0_ep:  endpoint { remote-endpoint = <&c2cmf_ep>;  };};/* (X) to pair */297				port@1 { reg = <1>; mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; };};/* (A) Multi Element */298				port@2 { reg = <2>; mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; };};/* (B) Multi Element */299			};300 301			/*302			 * [Codec2Codec-Multi]::Codec303			 *304			 *		+---+305			 *	   +-@->|X A|-> codec8306			 *	   |	|  B|-> codec9307			 *	   |	+---+308			 *	   |	+---+309			 *	   +--->|x a|-> codec10310			 *		|  b|-> codec11311			 *		+---+312			 */313			ports@4 {314				reg = <4>;315				#address-cells = <1>;316				#size-cells = <0>;317				port@0 { reg = <0>; mc2c1_ep:  endpoint { remote-endpoint = <&c2cmb_ep>;   };};/* (x) to pair */318				port@1 { reg = <1>; mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; };};/* (a) Multi Element */319				port@2 { reg = <2>; mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; };};/* (b) Multi Element */320			};321 322			/*323			 * [Semi-Multi]324			 *325			 *			+---+326			 *	cpu7 <-@------->|X A|-> codec12327			 *			|  B|-> codec13328			 *			+---+329			 */330			ports@5 {331				reg = <5>;332				#address-cells = <1>;333				#size-cells = <0>;334				port@0 { reg = <0>; smcodec0_ep: endpoint { remote-endpoint = <&cpu7_ep>;    };};/* (X) to pair */335				port@1 { reg = <1>; smcodec1_ep: endpoint { remote-endpoint = <&codec12_ep>; };};/* (A) Multi Element */336				port@2 { reg = <2>; smcodec2_ep: endpoint { remote-endpoint = <&codec13_ep>; };};/* (B) Multi Element */337			};338 339			/*340			 * [Multi-CPU-1]341			 *342			 *		+---+		+---+343			 *		|  X|<-@------->|x  |344			 *		|   |		|   |345			 *	cpu8 <--|A 1|<--------->|3 a|-> codec14346			 *	cpu9 <--|B 2|<---+----->|4 b|-> codec15347			 *		+---+	  \---->|5 c|-> codec16348			 *				+---+349			 */350			ports@6 {351				reg = <6>;352				#address-cells = <1>;353				#size-cells = <0>;354			mcpu1:	port@0 { reg = <0>; mcpu10_ep: endpoint { remote-endpoint = <&mcodec10_ep>; };};    /* (X) to pair */355				port@1 {356					#address-cells = <1>;357					#size-cells = <0>;358					reg = <1>;359					mcpu11_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu8_ep>;       }; /* (A) Multi Element */360					mcpu11_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec11_ep_0>; }; /* (1) connected Codec */361				};362				port@2 {363					#address-cells = <1>;364					#size-cells = <0>;365					reg = <2>;366					mcpu12_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu9_ep>;       }; /* (B) Multi Element */367					mcpu12_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec12_ep_0>; }; /* (2) connected Codec */368					mcpu12_ep_1: endpoint@2 { reg = <2>; remote-endpoint = <&mcodec13_ep_0>; }; /* (2) connected Codec */369				};370			};371 372			/*373			 * [Multi-Codec-1]374			 *375			 *		+---+		+---+376			 *		|  X|<-@------->|x  |377			 *		|   |		|   |378			 *	cpu8 <--|A 1|<--------->|3 a|-> codec14379			 *	cpu9 <--|B 2|<---+----->|4 b|-> codec15380			 *		+---+	  \---->|5 c|-> codec16381			 *				+---+382			 */383			ports@7 {384				reg = <7>;385				#address-cells = <1>;386				#size-cells = <0>;387				port@0 { reg = <0>; mcodec10_ep: endpoint { remote-endpoint = <&mcpu10_ep>;  };};   /* (x) to pair */388				port@1 {389					#address-cells = <1>;390					#size-cells = <0>;391					reg = <1>;392					mcodec11_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec14_ep>;  }; /* (a) Multi Element */393					mcodec11_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu11_ep_0>; }; /* (3) connected CPU */394				};395				port@2 {396					#address-cells = <1>;397					#size-cells = <0>;398					reg = <2>;399					mcodec12_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec15_ep>;  }; /* (b) Multi Element */400					mcodec12_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu12_ep_0>; }; /* (4) connected CPU */401				};402				port@3 {403					#address-cells = <1>;404					#size-cells = <0>;405					reg = <3>;406					mcodec13_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec16_ep>;  }; /* (c) Multi Element */407					mcodec13_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu12_ep_1>; }; /* (5) connected CPU */408				};409			};410 411			/*412			 * [Multi-CPU-2]413			 *414			 *		+---+		+---+415			 *		|  X|<-@------->|x  |416			 *		|   |		|   |417			 *	cpu10 <-|A 1|<--------->|4 a|-> codec17418			 *	cpu11 <-|B 2|<-----+--->|5 b|-> codec18419			 *	cpu12 <-|C 3|<----/	+---+420			 *		+---+421			 */422			ports@8 {423				reg = <8>;424				#address-cells = <1>;425				#size-cells = <0>;426			mcpu2:	port@0 { reg = <0>; mcpu20_ep: endpoint { remote-endpoint = <&mcodec20_ep>; };};    /* (X) to pair */427				port@1 {428					#address-cells = <1>;429					#size-cells = <0>;430					reg = <1>;431					mcpu21_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu10_ep>;      }; /* (A) Multi Element */432					mcpu21_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec21_ep_0>; }; /* (1) connected Codec */433				};434				port@2 {435					#address-cells = <1>;436					#size-cells = <0>;437					reg = <2>;438					mcpu22_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu11_ep>;      }; /* (B) Multi Element */439					mcpu22_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec22_ep_0>; }; /* (2) connected Codec */440				};441				port@3 {442					#address-cells = <1>;443					#size-cells = <0>;444					reg = <3>;445					mcpu23_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu12_ep>;      }; /* (C) Multi Element */446					mcpu23_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec22_ep_1>; }; /* (3) connected Codec */447				};448			};449 450			/*451			 * [Multi-Codec-2]452			 *453			 *		+---+		+---+454			 *		|  X|<-@------->|x  |455			 *		|   |		|   |456			 *	cpu10 <-|A 1|<--------->|4 a|-> codec17457			 *	cpu11 <-|B 2|<-----+--->|5 b|-> codec18458			 *	cpu12 <-|C 3|<----/	+---+459			 *		+---+460			 */461			ports@9 {462				reg = <9>;463				#address-cells = <1>;464				#size-cells = <0>;465				port@0 { reg = <0>; mcodec20_ep: endpoint { remote-endpoint = <&mcpu20_ep>;  };};   /* (x) to pair */466				port@1 {467					#address-cells = <1>;468					#size-cells = <0>;469					reg = <1>;470					mcodec21_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec17_ep>;  }; /* (a) Multi Element */471					mcodec21_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu21_ep_0>; }; /* (4) connected CPU */472				};473				port@2 {474					#address-cells = <1>;475					#size-cells = <0>;476					reg = <2>;477					mcodec22_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec18_ep>;  }; /* (b) Multi Element */478					mcodec22_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu22_ep_0>; }; /* (5) connected CPU */479					mcodec22_ep_1: endpoint@2 { reg = <2>; remote-endpoint = <&mcpu23_ep_0>; }; /* (5) connected CPU */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 = <1>;492				#size-cells = <0>;493				/*494				 * [DPCM]::FE495				 *496				 *	FE				BE497				 *			****498				 *	cpu3 <-@(fe00)--*  *--(be0)@--> codec3499				 *	cpu4 <-@(fe01)--*  *		(44.1kHz)500				 *			****501				 */502			fe00:	port@0 { reg = <0>; fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; };503			fe01:	port@1 { reg = <1>; fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; };504 505				/*506				 * [DPCM-Multi]::FE507				 *508				 *		FE			BE509				 *			****		+-+510				 *	cpu5 <-@(fe10)--*  *---(be1)@-->| |-> codec4511				 *	cpu6 <-@(fe11)--*  *		| |-> codec5512				 *			****		+-+513				 */514			fe10:	port@2 { reg = <2>; fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; };515			fe11:	port@3 { reg = <3>; fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; };516			};517 518			ports@1 {519				reg = <1>;520 521				#address-cells = <1>;522				#size-cells = <0>;523				/*524				 * [DPCM]::BE525				 *526				 *	FE				BE527				 *			****528				 *	cpu3 <-@(fe00)--*  *--(be0)@--> codec3529				 *	cpu4 <-@(fe01)--*  *		(44.1kHz)530				 *			****531				 */532			be0:	port@0 { reg = <0>; be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; };533 534				/*535				 * [DPCM-Multi]::BE536				 *537				 *		FE			BE538				 *			****		+-+539				 *	cpu5 <-@(fe10)--*  *---(be1)@-->| |-> codec4540				 *	cpu6 <-@(fe11)--*  *		| |-> codec5541				 *			****		+-+542				 */543			be1:	port@1 { reg = <1>; be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; };544			};545		};546 547		codec2codec {548			#address-cells = <1>;549			#size-cells = <0>;550			/*551			 * [Codec2Codec]552			 *553			 *	+-@(c2c)-> codec6554			 *	|555			 *	+--------> codec7556			 */557			ports@0 {558				reg = <0>;559 560				#address-cells = <1>;561				#size-cells = <0>;562 563				/* use default settings */564			c2c:	port@0 { reg = <0>; c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; };565				port@1 { reg = <1>; c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; };566			};567 568			/*569			 * [Codec2Codec-Multi]570			 *571			 *			+-+572			 *	   +-@(c2c_m)-->| |-> codec8573			 *	   |		| |-> codec9574			 *	   |		+-+575			 *	   |		+-+576			 *	   +----------->| |-> codec10577			 *			| |-> codec11578			 *			+-+579			 */580			ports@1 {581				reg = <1>;582 583				#address-cells = <1>;584				#size-cells = <0>;585 586				/* use original settings */587				rate = <48000>;588			c2c_m:	port@0 { reg = <0>; c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; };589				port@1 { reg = <1>; c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; };590			};591		};592	};593 594	test_cpu {595		/*596		 * update compatible to indicate more detail behaviour597		 * if you want. see test-compatible for more detail.598		 *599		 * ex)600		 *	- compatible = "test-cpu";601		 *	+ compatible = "test-cpu-verbose";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 = <0>; cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; };612 613			/* [Multi-CPU-0] */614			      port@1 { reg = <1>; cpu1_ep: endpoint { remote-endpoint = <&mcpu01_ep>; }; };615			      port@2 { reg = <2>; cpu2_ep: endpoint { remote-endpoint = <&mcpu02_ep>; }; };616 617			/* [DPCM]::FE */618			      port@3 { reg = <3>; cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; };619			      port@4 { reg = <4>; cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; };620 621			/* [DPCM-Multi]::FE */622			      port@5 { reg = <5>; cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; };623			      port@6 { reg = <6>; cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; };624 625			/* [Semi-Multi] */626			sm0:  port@7 { reg = <7>; cpu7_ep: endpoint { remote-endpoint = <&smcodec0_ep>; }; };627 628			/* [Multi-CPU-1] */629			      port@8 { reg = <8>; cpu8_ep: endpoint { remote-endpoint = <&mcpu11_ep>;   }; };630			      port@9 { reg = <9>; cpu9_ep: endpoint { remote-endpoint = <&mcpu12_ep>;   }; };631			/* [Multi-CPU-2] */632			      port@a { reg = <10>; cpu10_ep: endpoint { remote-endpoint = <&mcpu21_ep>; }; };633			      port@b { reg = <11>; cpu11_ep: endpoint { remote-endpoint = <&mcpu22_ep>; }; };634			      port@c { reg = <12>; cpu12_ep: endpoint { remote-endpoint = <&mcpu23_ep>; }; };635		};636	};637 638	test_codec {639		/*640		 * update compatible to indicate more detail behaviour641		 * if you want. see test-compatible for more detail.642		 *643		 * ex)644		 *	- compatible = "test-codec";645		 *	+ compatible = "test-codec-verbose";646		 */647		compatible = "test-codec";648		ports {649			#address-cells = <1>;650			#size-cells = <0>;651 652			/*653			 * prefix can be added to *component*,654			 * see audio-graph-card2::routing655			 */656			prefix = "TC";657 658			/* [Normal] */659			port@0  { reg = <0>; codec0_ep:  endpoint { remote-endpoint = <&cpu0_ep>; }; };660 661			/* [Multi-Codec-0] */662			port@1  { reg = <1>; codec1_ep:  endpoint { remote-endpoint = <&mcodec01_ep>; }; };663			port@2  { reg = <2>; codec2_ep:  endpoint { remote-endpoint = <&mcodec02_ep>; }; };664 665			/* [DPCM]::BE */666			port@3  {667				convert-rate = <44100>;668				reg = <3>; codec3_ep:  endpoint { remote-endpoint = <&be00_ep>; };669			};670 671			/* [DPCM-Multi]::BE */672			port@4  { reg = <4>; codec4_ep:  endpoint { remote-endpoint = <&mbe1_ep>; }; };673			port@5  { reg = <5>; codec5_ep:  endpoint { remote-endpoint = <&mbe2_ep>; }; };674 675			/* [Codec2Codec] */676			port@6  { bitclock-master;677				  frame-master;678				  reg = <6>; codec6_ep:  endpoint { remote-endpoint = <&c2cf_ep>; }; };679			port@7  { reg = <7>; codec7_ep:  endpoint { remote-endpoint = <&c2cb_ep>; }; };680 681			/* [Codec2Codec-Multi] */682			port@8  { bitclock-master;683				  frame-master;684				  reg = <8>;  codec8_ep:  endpoint { remote-endpoint = <&mc2c00_ep>; }; };685			port@9  { reg = <9>;  codec9_ep:  endpoint { remote-endpoint = <&mc2c01_ep>; }; };686			port@a  { reg = <10>; codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; };687			port@b  { reg = <11>; codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; };688 689			/* [Semi-Multi] */690			port@c { reg = <12>; codec12_ep: endpoint { remote-endpoint = <&smcodec1_ep>; }; };691			port@d { reg = <13>; codec13_ep: endpoint { remote-endpoint = <&smcodec2_ep>; }; };692 693			/* [Multi-Codec-1] */694			port@e  { reg = <14>; codec14_ep: endpoint { remote-endpoint = <&mcodec11_ep>; }; };695			port@f  { reg = <15>; codec15_ep: endpoint { remote-endpoint = <&mcodec12_ep>; }; };696			port@10 { reg = <16>; codec16_ep: endpoint { remote-endpoint = <&mcodec13_ep>; }; };697			/* [Multi-Codec-2] */698			port@11 { reg = <17>; codec17_ep: endpoint { remote-endpoint = <&mcodec21_ep>; }; };699			port@12 { reg = <18>; codec18_ep: endpoint { remote-endpoint = <&mcodec22_ep>; }; };700		};701	};702};703