xref: /linux/sound/soc/generic/audio-graph-card2-custom-sample2.dtsi (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
1*7c057219SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0
2*7c057219SKuninori Morimoto/*
3*7c057219SKuninori Morimoto * audio-graph-card2-custom-sample2.dtsi
4*7c057219SKuninori Morimoto *
5*7c057219SKuninori Morimoto * Copyright (C) 2020 Renesas Electronics Corp.
6*7c057219SKuninori Morimoto * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
7*7c057219SKuninori Morimoto *
8*7c057219SKuninori Morimoto * This sample indicates how to use audio-graph-card2 and its
9*7c057219SKuninori Morimoto * custom driver. "audio-graph-card2-custom-sample" is the custome driver
10*7c057219SKuninori Morimoto * which is using audio-graph-card2.
11*7c057219SKuninori Morimoto *
12*7c057219SKuninori Morimoto * You can easily use this sample by adding below line on your DT file,
13*7c057219SKuninori Morimoto * and add new CONFIG to your .config.
14*7c057219SKuninori Morimoto *
15*7c057219SKuninori Morimoto *	#include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample2.dtsi"
16*7c057219SKuninori Morimoto *
17*7c057219SKuninori Morimoto *	CONFIG_SND_AUDIO_GRAPH_CARD2
18*7c057219SKuninori Morimoto *	CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE
19*7c057219SKuninori Morimoto *	CONFIG_SND_TEST_COMPONENT
20*7c057219SKuninori Morimoto *
21*7c057219SKuninori Morimoto *
22*7c057219SKuninori Morimoto * You can indicate more detail each device behavior as debug if you modify
23*7c057219SKuninori Morimoto * "compatible" on each test-component. see below
24*7c057219SKuninori Morimoto *
25*7c057219SKuninori Morimoto *	test_cpu {
26*7c057219SKuninori Morimoto *	-	compatible = "test-cpu";
27*7c057219SKuninori Morimoto *	+	compatible = "test-cpu-verbose";
28*7c057219SKuninori Morimoto *		...
29*7c057219SKuninori Morimoto *	};
30*7c057219SKuninori Morimoto *
31*7c057219SKuninori Morimoto *	test_codec {
32*7c057219SKuninori Morimoto *	-	compatible = "test-codec";
33*7c057219SKuninori Morimoto *	+	compatible = "test-codec-verbose";
34*7c057219SKuninori Morimoto *		...
35*7c057219SKuninori Morimoto *	};
36*7c057219SKuninori Morimoto *
37*7c057219SKuninori Morimoto *
38*7c057219SKuninori Morimoto * Below sample doesn't use "format" property,
39*7c057219SKuninori Morimoto * because test-component driver (test-cpu/test-codec) is supporting
40*7c057219SKuninori Morimoto * snd_soc_dai_ops :: .auto_selectable_formats.
41*7c057219SKuninori Morimoto * see
42*7c057219SKuninori Morimoto *	snd_soc_runtime_get_dai_fmt()
43*7c057219SKuninori Morimoto *	linux/sound/soc/generic/test-component.c :: test_dai_formats
44*7c057219SKuninori Morimoto */
45*7c057219SKuninori Morimoto/ {
46*7c057219SKuninori Morimoto	audio-graph-card2-custom-sample-2 {
47*7c057219SKuninori Morimoto		/*
48*7c057219SKuninori Morimoto		 * You can use audio-graph-card2 directly by using
49*7c057219SKuninori Morimoto		 *
50*7c057219SKuninori Morimoto		 * compatible = "audio-graph-card2";
51*7c057219SKuninori Morimoto		 */
52*7c057219SKuninori Morimoto		compatible = "audio-graph-card2-custom-sample";
53*7c057219SKuninori Morimoto		label = "card2-custom-sample-2";
54*7c057219SKuninori Morimoto
55*7c057219SKuninori Morimoto			/* for [DPCM]		   */
56*7c057219SKuninori Morimoto			/* BE			FE */
57*7c057219SKuninori Morimoto		routing = "TC DAI0 Playback",	"DAI0 Playback",
58*7c057219SKuninori Morimoto			  "TC DAI0 Playback",	"DAI1 Playback",
59*7c057219SKuninori Morimoto			  "DAI0 Capture",	"TC DAI0 Capture",
60*7c057219SKuninori Morimoto			  "DAI1 Capture",	"TC DAI0 Capture",
61*7c057219SKuninori Morimoto			/* for [DPCM-Multi]	   */
62*7c057219SKuninori Morimoto			/* BE			FE */
63*7c057219SKuninori Morimoto			  "TC DAI1 Playback",	"DAI2 Playback",
64*7c057219SKuninori Morimoto			  "TC DAI2 Playback",	"DAI2 Playback",
65*7c057219SKuninori Morimoto			  "TC DAI1 Playback",	"DAI3 Playback",
66*7c057219SKuninori Morimoto			  "TC DAI2 Playback",	"DAI3 Playback",
67*7c057219SKuninori Morimoto			  "DAI2 Capture",	"TC DAI1 Capture",
68*7c057219SKuninori Morimoto			  "DAI2 Capture",	"TC DAI2 Capture",
69*7c057219SKuninori Morimoto			  "DAI3 Capture",	"TC DAI1 Capture",
70*7c057219SKuninori Morimoto			  "DAI3 Capture",	"TC DAI2 Capture",
71*7c057219SKuninori Morimoto			/* for [Codec2Codec] */
72*7c057219SKuninori Morimoto			  "TC OUT",		"TC DAI4 Playback",
73*7c057219SKuninori Morimoto			  "TC DAI3 Capture",	"TC IN",
74*7c057219SKuninori Morimoto			/* for [Codec2Codec-Multi] */
75*7c057219SKuninori Morimoto			  "TC OUT",		"TC DAI7 Playback",
76*7c057219SKuninori Morimoto			  "TC DAI5 Capture",	"TC IN",
77*7c057219SKuninori Morimoto			  "TC OUT",		"TC DAI8 Playback",
78*7c057219SKuninori Morimoto			  "TC DAI6 Capture",	"TC IN";
79*7c057219SKuninori Morimoto
80*7c057219SKuninori Morimoto		/*
81*7c057219SKuninori Morimoto		 * @ : used at links
82*7c057219SKuninori Morimoto		 */
83*7c057219SKuninori Morimoto		links = <
84*7c057219SKuninori Morimoto			/*
85*7c057219SKuninori Morimoto			 * [DPCM]
86*7c057219SKuninori Morimoto			 *
87*7c057219SKuninori Morimoto			 *	cpu20/cpu21 are converting rate to 44.1kHz
88*7c057219SKuninori Morimoto			 *
89*7c057219SKuninori Morimoto			 *	FE				BE
90*7c057219SKuninori Morimoto			 *		 <feA>	****	<beA>
91*7c057219SKuninori Morimoto			 *	cpu2_0 <----@---*  *------@---> codec2_0 (44.1kHz)
92*7c057219SKuninori Morimoto			 *	cpu2_1 <----@---*  *
93*7c057219SKuninori Morimoto			 *		 <feB>	****
94*7c057219SKuninori Morimoto			 */
95*7c057219SKuninori Morimoto			 &feA &feB &beA /* both FE / BE */
96*7c057219SKuninori Morimoto
97*7c057219SKuninori Morimoto			/*
98*7c057219SKuninori Morimoto			 * [DPCM-Multi]
99*7c057219SKuninori Morimoto			 *
100*7c057219SKuninori Morimoto			 *	FE				BE
101*7c057219SKuninori Morimoto			 *		 <feC>	****	<beB>	+-+
102*7c057219SKuninori Morimoto			 *	cpu2_2 <----@---*  *------@---> | | -> codec2_1
103*7c057219SKuninori Morimoto			 *	cpu2_3 <----@---*  *		| | -> codec2_2
104*7c057219SKuninori Morimoto			 *		 <feD>	****		+-+
105*7c057219SKuninori Morimoto			 */
106*7c057219SKuninori Morimoto			 &feC &feD &beB /* both FE / BE*/
107*7c057219SKuninori Morimoto
108*7c057219SKuninori Morimoto			/*
109*7c057219SKuninori Morimoto			 * [Codec2Codec]
110*7c057219SKuninori Morimoto			 *
111*7c057219SKuninori Morimoto			 *		<c2c>
112*7c057219SKuninori Morimoto			 *		+-@-> codec2_3
113*7c057219SKuninori Morimoto			 *		|
114*7c057219SKuninori Morimoto			 *		+---> codec2_4
115*7c057219SKuninori Morimoto			 */
116*7c057219SKuninori Morimoto			 &c2c /* CPU side only */
117*7c057219SKuninori Morimoto
118*7c057219SKuninori Morimoto			/*
119*7c057219SKuninori Morimoto			 * [Codec2Codec-Multi]
120*7c057219SKuninori Morimoto			 *
121*7c057219SKuninori Morimoto			 * --NOTE--
122*7c057219SKuninori Morimoto			 * Multi connect N:M is not supported by ASoC.
123*7c057219SKuninori Morimoto			 *
124*7c057219SKuninori Morimoto			 *	<c2c_m>	+-+
125*7c057219SKuninori Morimoto			 *	+---@-->| |-> codec2_5
126*7c057219SKuninori Morimoto			 *	|	| |-> codec2_6
127*7c057219SKuninori Morimoto			 *	|	+-+
128*7c057219SKuninori Morimoto			 *	|	+-+
129*7c057219SKuninori Morimoto			 *	+------>| |-> codec2_7
130*7c057219SKuninori Morimoto			 *		| |-> codec2_8
131*7c057219SKuninori Morimoto			 *		+-+
132*7c057219SKuninori Morimoto			 */
133*7c057219SKuninori Morimoto			 &c2c_m /* CPU side only */
134*7c057219SKuninori Morimoto		>;
135*7c057219SKuninori Morimoto
136*7c057219SKuninori Morimoto		multi {
137*7c057219SKuninori Morimoto			#address-cells = <1>;
138*7c057219SKuninori Morimoto			#size-cells = <0>;
139*7c057219SKuninori Morimoto
140*7c057219SKuninori Morimoto			/*
141*7c057219SKuninori Morimoto			 * [DPCM-Multi]::BE
142*7c057219SKuninori Morimoto			 *
143*7c057219SKuninori Morimoto			 *	FE				BE
144*7c057219SKuninori Morimoto			 *		 <feC>	****	<beB>	+---+
145*7c057219SKuninori Morimoto			 *	cpu2_2 <----@---*  *------@---> |x a| -> codec2_1
146*7c057219SKuninori Morimoto			 *	cpu2_3 <----@---*  *		|  b| -> codec2_2
147*7c057219SKuninori Morimoto			 *		 <feD>	****		+---+
148*7c057219SKuninori Morimoto			 */
149*7c057219SKuninori Morimoto			ports@2 {
150*7c057219SKuninori Morimoto				reg = <2>;
151*7c057219SKuninori Morimoto				#address-cells = <1>;
152*7c057219SKuninori Morimoto				#size-cells = <0>;
153*7c057219SKuninori Morimoto				port@0 { reg = <0>; mbe_x_ep: endpoint { remote-endpoint = <&beB_ep>;      };};/* (x) to pair */
154*7c057219SKuninori Morimoto				port@1 { reg = <1>; mbe_a_ep: endpoint { remote-endpoint = <&codec2_1_ep>; };};/* (a) Multi Element */
155*7c057219SKuninori Morimoto				port@2 { reg = <2>; mbe_b_ep: endpoint { remote-endpoint = <&codec2_2_ep>; };};/* (b) Multi Element */
156*7c057219SKuninori Morimoto			};
157*7c057219SKuninori Morimoto
158*7c057219SKuninori Morimoto			/*
159*7c057219SKuninori Morimoto			 * [Codec2Codec-Multi]::CPU
160*7c057219SKuninori Morimoto			 *
161*7c057219SKuninori Morimoto			 *	<c2c_m>	  c2cmf +---+
162*7c057219SKuninori Morimoto			 *	+---@---------->|X A|-> codec2_5
163*7c057219SKuninori Morimoto			 *	|		|  B|-> codec2_6
164*7c057219SKuninori Morimoto			 *	|		+---+
165*7c057219SKuninori Morimoto			 *	|	  c2cmb +---+
166*7c057219SKuninori Morimoto			 *	+-------------->|x a|-> codec2_7
167*7c057219SKuninori Morimoto			 *			|  b|-> codec2_8
168*7c057219SKuninori Morimoto			 *			+---+
169*7c057219SKuninori Morimoto			 */
170*7c057219SKuninori Morimoto			ports@3 {
171*7c057219SKuninori Morimoto				reg = <3>;
172*7c057219SKuninori Morimoto				#address-cells = <1>;
173*7c057219SKuninori Morimoto				#size-cells = <0>;
174*7c057219SKuninori Morimoto				port@0 { reg = <0>; mc2c0X_ep: endpoint { remote-endpoint = <&c2cmf_ep>;    };};/* (X) to pair */
175*7c057219SKuninori Morimoto				port@1 { reg = <1>; mc2c0A_ep: endpoint { remote-endpoint = <&codec2_5_ep>; };};/* (A) Multi Element */
176*7c057219SKuninori Morimoto				port@2 { reg = <2>; mc2c0B_ep: endpoint { remote-endpoint = <&codec2_6_ep>; };};/* (B) Multi Element */
177*7c057219SKuninori Morimoto			};
178*7c057219SKuninori Morimoto
179*7c057219SKuninori Morimoto			/*
180*7c057219SKuninori Morimoto			 * [Codec2Codec-Multi]::Codec
181*7c057219SKuninori Morimoto			 *
182*7c057219SKuninori Morimoto			 *	<c2c_m>	  c2cmf +---+
183*7c057219SKuninori Morimoto			 *	+---@---------->|X A|-> codec2_5
184*7c057219SKuninori Morimoto			 *	|		|  B|-> codec2_6
185*7c057219SKuninori Morimoto			 *	|		+---+
186*7c057219SKuninori Morimoto			 *	|	  c2cmb +---+
187*7c057219SKuninori Morimoto			 *	+-------------->|x a|-> codec2_7
188*7c057219SKuninori Morimoto			 *			|  b|-> codec2_8
189*7c057219SKuninori Morimoto			 *			+---+
190*7c057219SKuninori Morimoto			 */
191*7c057219SKuninori Morimoto			ports@4 {
192*7c057219SKuninori Morimoto				reg = <4>;
193*7c057219SKuninori Morimoto				#address-cells = <1>;
194*7c057219SKuninori Morimoto				#size-cells = <0>;
195*7c057219SKuninori Morimoto				port@0 { reg = <0>; mc2c1x_ep: endpoint { remote-endpoint = <&c2cmb_ep>;    };};/* (x) to pair */
196*7c057219SKuninori Morimoto				port@1 { reg = <1>; mc2c1a_ep: endpoint { remote-endpoint = <&codec2_7_ep>; };};/* (a) Multi Element */
197*7c057219SKuninori Morimoto				port@2 { reg = <2>; mc2c1b_ep: endpoint { remote-endpoint = <&codec2_8_ep>; };};/* (b) Multi Element */
198*7c057219SKuninori Morimoto			};
199*7c057219SKuninori Morimoto		};
200*7c057219SKuninori Morimoto
201*7c057219SKuninori Morimoto		dpcm {
202*7c057219SKuninori Morimoto			#address-cells = <1>;
203*7c057219SKuninori Morimoto			#size-cells = <0>;
204*7c057219SKuninori Morimoto
205*7c057219SKuninori Morimoto			/* FE part */
206*7c057219SKuninori Morimoto			ports@0 {
207*7c057219SKuninori Morimoto				reg = <0>;
208*7c057219SKuninori Morimoto
209*7c057219SKuninori Morimoto				#address-cells = <1>;
210*7c057219SKuninori Morimoto				#size-cells = <0>;
211*7c057219SKuninori Morimoto				/*
212*7c057219SKuninori Morimoto				 * [DPCM]::FE
213*7c057219SKuninori Morimoto				 *
214*7c057219SKuninori Morimoto				 *	FE				BE
215*7c057219SKuninori Morimoto				 *		 <feA>	****	<beA>
216*7c057219SKuninori Morimoto				 *	cpu2_0 <----@---*  *------@---> codec2_0 (44.1kHz)
217*7c057219SKuninori Morimoto				 *	cpu2_1 <----@---*  *
218*7c057219SKuninori Morimoto				 *		 <feB>	****
219*7c057219SKuninori Morimoto				 */
220*7c057219SKuninori Morimoto			feA:	port@0 { reg = <0>; feA_ep: endpoint { remote-endpoint = <&cpu2_0_ep>; }; };
221*7c057219SKuninori Morimoto			feB:	port@1 { reg = <1>; feB_ep: endpoint { remote-endpoint = <&cpu2_1_ep>; }; };
222*7c057219SKuninori Morimoto
223*7c057219SKuninori Morimoto				/*
224*7c057219SKuninori Morimoto				 * [DPCM-Multi]::FE
225*7c057219SKuninori Morimoto				 *
226*7c057219SKuninori Morimoto				 *	FE				BE
227*7c057219SKuninori Morimoto				 *		 <feC>	****	<beB>	+-+
228*7c057219SKuninori Morimoto				 *	cpu2_2 <----@---*  *------@---> | | -> codec2_1
229*7c057219SKuninori Morimoto				 *	cpu2_3 <----@---*  *		| | -> codec2_2
230*7c057219SKuninori Morimoto				 *		 <feD>	****		+-+
231*7c057219SKuninori Morimoto				 */
232*7c057219SKuninori Morimoto			feC:	port@2 { reg = <2>; feC_ep: endpoint { remote-endpoint = <&cpu2_2_ep>; }; };
233*7c057219SKuninori Morimoto			feD:	port@3 { reg = <3>; feD_ep: endpoint { remote-endpoint = <&cpu2_3_ep>; }; };
234*7c057219SKuninori Morimoto			};
235*7c057219SKuninori Morimoto
236*7c057219SKuninori Morimoto			/* BE part */
237*7c057219SKuninori Morimoto			ports@1 {
238*7c057219SKuninori Morimoto				reg = <1>;
239*7c057219SKuninori Morimoto
240*7c057219SKuninori Morimoto				#address-cells = <1>;
241*7c057219SKuninori Morimoto				#size-cells = <0>;
242*7c057219SKuninori Morimoto				/*
243*7c057219SKuninori Morimoto				 * [DPCM]::BE
244*7c057219SKuninori Morimoto				 *
245*7c057219SKuninori Morimoto				 *	FE				BE
246*7c057219SKuninori Morimoto				 *		 <feA>	****	<beA>
247*7c057219SKuninori Morimoto				 *	cpu2_0 <----@---*  *------@---> codec2_0 (44.1kHz)
248*7c057219SKuninori Morimoto				 *	cpu2_1 <----@---*  *
249*7c057219SKuninori Morimoto				 *		 <feB>	****
250*7c057219SKuninori Morimoto				 */
251*7c057219SKuninori Morimoto			beA:	port@0 { reg = <0>; beA_ep: endpoint { remote-endpoint = <&codec2_0_ep>; }; };
252*7c057219SKuninori Morimoto
253*7c057219SKuninori Morimoto				/*
254*7c057219SKuninori Morimoto				 * [DPCM-Multi]::BE
255*7c057219SKuninori Morimoto				 *
256*7c057219SKuninori Morimoto				 *	FE				BE
257*7c057219SKuninori Morimoto				 *		 <feC>	****	<beB>	+-------+
258*7c057219SKuninori Morimoto				 *	cpu2_2 <----@---*  *------@---> |mbe_x  | -> codec2_1
259*7c057219SKuninori Morimoto				 *	cpu2_3 <----@---*  *		|	| -> codec2_2
260*7c057219SKuninori Morimoto				 *		 <feD>	****		+-------+
261*7c057219SKuninori Morimoto				 */
262*7c057219SKuninori Morimoto			beB:	port@1 { reg = <1>; beB_ep: endpoint { remote-endpoint = <&mbe_x_ep>; }; };
263*7c057219SKuninori Morimoto			};
264*7c057219SKuninori Morimoto		};
265*7c057219SKuninori Morimoto
266*7c057219SKuninori Morimoto		codec2codec {
267*7c057219SKuninori Morimoto			#address-cells = <1>;
268*7c057219SKuninori Morimoto			#size-cells = <0>;
269*7c057219SKuninori Morimoto			/*
270*7c057219SKuninori Morimoto			 * [Codec2Codec]
271*7c057219SKuninori Morimoto			 *
272*7c057219SKuninori Morimoto			 *	<c2c>
273*7c057219SKuninori Morimoto			 *	+-@--> codec2_3
274*7c057219SKuninori Morimoto			 *	|
275*7c057219SKuninori Morimoto			 *	+----> codec2_4
276*7c057219SKuninori Morimoto			 */
277*7c057219SKuninori Morimoto			ports@0 {
278*7c057219SKuninori Morimoto				reg = <0>;
279*7c057219SKuninori Morimoto
280*7c057219SKuninori Morimoto				#address-cells = <1>;
281*7c057219SKuninori Morimoto				#size-cells = <0>;
282*7c057219SKuninori Morimoto
283*7c057219SKuninori Morimoto				/* use default settings */
284*7c057219SKuninori Morimoto			c2c:	port@0 { reg = <0>; c2cf_ep: endpoint { remote-endpoint = <&codec2_3_ep>; }; };
285*7c057219SKuninori Morimoto				port@1 { reg = <1>; c2cb_ep: endpoint { remote-endpoint = <&codec2_4_ep>; }; };
286*7c057219SKuninori Morimoto			};
287*7c057219SKuninori Morimoto
288*7c057219SKuninori Morimoto			/*
289*7c057219SKuninori Morimoto			 * [Codec2Codec-Multi]
290*7c057219SKuninori Morimoto			 *
291*7c057219SKuninori Morimoto			 *	<c2c_m>	  c2cmf +--------+
292*7c057219SKuninori Morimoto			 *	+---@---------->|mc2c0X	 |-> codec2_5
293*7c057219SKuninori Morimoto			 *	|		|	 |-> codec2_6
294*7c057219SKuninori Morimoto			 *	|		+--------+
295*7c057219SKuninori Morimoto			 *	|	  c2cmb +--------+
296*7c057219SKuninori Morimoto			 *	+-------------->|mc2c1x	 |-> codec2_7
297*7c057219SKuninori Morimoto			 *			|	 |-> codec2_8
298*7c057219SKuninori Morimoto			 *			+--------+
299*7c057219SKuninori Morimoto			 */
300*7c057219SKuninori Morimoto			ports@1 {
301*7c057219SKuninori Morimoto				reg = <1>;
302*7c057219SKuninori Morimoto
303*7c057219SKuninori Morimoto				#address-cells = <1>;
304*7c057219SKuninori Morimoto				#size-cells = <0>;
305*7c057219SKuninori Morimoto
306*7c057219SKuninori Morimoto				/* use original settings */
307*7c057219SKuninori Morimoto				rate = <48000>;
308*7c057219SKuninori Morimoto			c2c_m:	port@0 { reg = <0>; c2cmf_ep: endpoint { remote-endpoint = <&mc2c0X_ep>; }; };
309*7c057219SKuninori Morimoto				port@1 { reg = <1>; c2cmb_ep: endpoint { remote-endpoint = <&mc2c1x_ep>; }; };
310*7c057219SKuninori Morimoto			};
311*7c057219SKuninori Morimoto		};
312*7c057219SKuninori Morimoto	};
313*7c057219SKuninori Morimoto
314*7c057219SKuninori Morimoto	test_cpu_2 {
315*7c057219SKuninori Morimoto		/*
316*7c057219SKuninori Morimoto		 * update compatible to indicate more detail behaviour
317*7c057219SKuninori Morimoto		 * if you want. see test-compatible for more detail.
318*7c057219SKuninori Morimoto		 *
319*7c057219SKuninori Morimoto		 * ex)
320*7c057219SKuninori Morimoto		 *	- compatible = "test-cpu";
321*7c057219SKuninori Morimoto		 *	+ compatible = "test-cpu-verbose";
322*7c057219SKuninori Morimoto		 */
323*7c057219SKuninori Morimoto		compatible = "test-cpu";
324*7c057219SKuninori Morimoto		ports {
325*7c057219SKuninori Morimoto			#address-cells = <1>;
326*7c057219SKuninori Morimoto			#size-cells = <0>;
327*7c057219SKuninori Morimoto
328*7c057219SKuninori Morimoto			bitclock-master;
329*7c057219SKuninori Morimoto			frame-master;
330*7c057219SKuninori Morimoto
331*7c057219SKuninori Morimoto			/* [DPCM]::FE */
332*7c057219SKuninori Morimoto			port@0 { reg = <0>; cpu2_0_ep: endpoint { remote-endpoint = <&feA_ep>; };};
333*7c057219SKuninori Morimoto			port@1 { reg = <1>; cpu2_1_ep: endpoint { remote-endpoint = <&feB_ep>; };};
334*7c057219SKuninori Morimoto			/* [DPCM-Multi]::FE */
335*7c057219SKuninori Morimoto			port@2 { reg = <2>; cpu2_2_ep: endpoint { remote-endpoint = <&feC_ep>; };};
336*7c057219SKuninori Morimoto			port@3 { reg = <3>; cpu2_3_ep: endpoint { remote-endpoint = <&feD_ep>; };};
337*7c057219SKuninori Morimoto		};
338*7c057219SKuninori Morimoto	};
339*7c057219SKuninori Morimoto
340*7c057219SKuninori Morimoto	test_codec_2 {
341*7c057219SKuninori Morimoto		/*
342*7c057219SKuninori Morimoto		 * update compatible to indicate more detail behaviour
343*7c057219SKuninori Morimoto		 * if you want. see test-compatible for more detail.
344*7c057219SKuninori Morimoto		 *
345*7c057219SKuninori Morimoto		 * ex)
346*7c057219SKuninori Morimoto		 *	- compatible = "test-codec";
347*7c057219SKuninori Morimoto		 *	+ compatible = "test-codec-verbose";
348*7c057219SKuninori Morimoto		 */
349*7c057219SKuninori Morimoto		compatible = "test-codec";
350*7c057219SKuninori Morimoto		ports {
351*7c057219SKuninori Morimoto			#address-cells = <1>;
352*7c057219SKuninori Morimoto			#size-cells = <0>;
353*7c057219SKuninori Morimoto
354*7c057219SKuninori Morimoto			/*
355*7c057219SKuninori Morimoto			 * prefix can be added to *component*,
356*7c057219SKuninori Morimoto			 * see audio-graph-card2::routing
357*7c057219SKuninori Morimoto			 */
358*7c057219SKuninori Morimoto			prefix = "TC";
359*7c057219SKuninori Morimoto
360*7c057219SKuninori Morimoto			/* [DPCM]::BE */
361*7c057219SKuninori Morimoto			port@0 {
362*7c057219SKuninori Morimoto				 convert-rate = <44100>;
363*7c057219SKuninori Morimoto				 reg = <0>; codec2_0_ep: endpoint { remote-endpoint = <&beA_ep>; };
364*7c057219SKuninori Morimoto			};
365*7c057219SKuninori Morimoto			/* [DPCM-Multi]::BE */
366*7c057219SKuninori Morimoto			port@1 { reg = <1>; codec2_1_ep: endpoint { remote-endpoint = <&mbe_a_ep>; };};
367*7c057219SKuninori Morimoto			port@2 { reg = <2>; codec2_2_ep: endpoint { remote-endpoint = <&mbe_b_ep>; };};
368*7c057219SKuninori Morimoto			/* [Codec2Codec] */
369*7c057219SKuninori Morimoto			port@3 { bitclock-master;
370*7c057219SKuninori Morimoto				 frame-master;
371*7c057219SKuninori Morimoto				 reg = <3>; codec2_3_ep: endpoint { remote-endpoint = <&c2cf_ep>; };};
372*7c057219SKuninori Morimoto			port@4 { reg = <4>; codec2_4_ep: endpoint { remote-endpoint = <&c2cb_ep>; };};
373*7c057219SKuninori Morimoto			/* [Codec2Codec-Multi] */
374*7c057219SKuninori Morimoto			port@5 { bitclock-master;
375*7c057219SKuninori Morimoto				 frame-master;
376*7c057219SKuninori Morimoto				 reg = <5>; codec2_5_ep: endpoint { remote-endpoint = <&mc2c0A_ep>; };};
377*7c057219SKuninori Morimoto			port@6 { reg = <6>; codec2_6_ep: endpoint { remote-endpoint = <&mc2c0B_ep>; };};
378*7c057219SKuninori Morimoto			port@7 { reg = <7>; codec2_7_ep: endpoint { remote-endpoint = <&mc2c1a_ep>; };};
379*7c057219SKuninori Morimoto			port@8 { reg = <8>; codec2_8_ep: endpoint { remote-endpoint = <&mc2c1b_ep>; };};
380*7c057219SKuninori Morimoto		};
381*7c057219SKuninori Morimoto	};
382*7c057219SKuninori Morimoto};
383