xref: /openbmc/linux/sound/soc/generic/audio-graph-card2-custom-sample.dtsi (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1c601fdf5SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0
2c601fdf5SKuninori Morimoto/*
3c601fdf5SKuninori Morimoto * audio-graph-card2-custom-sample.dtsi
4c601fdf5SKuninori Morimoto *
5c601fdf5SKuninori Morimoto * Copyright (C) 2020 Renesas Electronics Corp.
6c601fdf5SKuninori Morimoto * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
7c601fdf5SKuninori Morimoto *
8c601fdf5SKuninori Morimoto * This sample indicates how to use audio-graph-card2 and its
9c601fdf5SKuninori Morimoto * custom driver. "audio-graph-card2-custom-sample" is the custome driver
10c601fdf5SKuninori Morimoto * which is using audio-graph-card2.
11c601fdf5SKuninori Morimoto *
12c601fdf5SKuninori Morimoto * You can easily use this sample by adding below line on your DT file,
13c601fdf5SKuninori Morimoto * and add new CONFIG to your .config.
14c601fdf5SKuninori Morimoto *
15c601fdf5SKuninori Morimoto *	#include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi"
16c601fdf5SKuninori Morimoto *
17c601fdf5SKuninori Morimoto *	CONFIG_SND_AUDIO_GRAPH_CARD2
18c601fdf5SKuninori Morimoto *	CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE
19c601fdf5SKuninori Morimoto *	CONFIG_SND_TEST_COMPONENT
20d33083f9SKuninori Morimoto *
21d33083f9SKuninori Morimoto *
22d33083f9SKuninori Morimoto * You can indicate more detail each device behavior as debug if you modify
23d33083f9SKuninori Morimoto * "compatible" on each test-component. see below
24d33083f9SKuninori Morimoto *
25d33083f9SKuninori Morimoto *	test_cpu {
26d33083f9SKuninori Morimoto *	-	compatible = "test-cpu";
27d33083f9SKuninori Morimoto *	+	compatible = "test-cpu-verbose";
28d33083f9SKuninori Morimoto *		...
29d33083f9SKuninori Morimoto *	};
30d33083f9SKuninori Morimoto *
31d33083f9SKuninori Morimoto *	test_codec {
32d33083f9SKuninori Morimoto *	-	compatible = "test-codec";
33d33083f9SKuninori Morimoto *	+	compatible = "test-codec-verbose";
34d33083f9SKuninori Morimoto *		...
35d33083f9SKuninori Morimoto *	};
36d33083f9SKuninori Morimoto *
37*ea2cb26aSKuninori Morimoto *
38*ea2cb26aSKuninori Morimoto * Below sample doesn't use "format" property,
39*ea2cb26aSKuninori Morimoto * because test-component driver (test-cpu/test-codec) is supporting
40*ea2cb26aSKuninori Morimoto * snd_soc_dai_ops :: .auto_selectable_formats.
41*ea2cb26aSKuninori Morimoto * see
42*ea2cb26aSKuninori Morimoto *	snd_soc_runtime_get_dai_fmt()
43*ea2cb26aSKuninori Morimoto *	linux/sound/soc/generic/test-component.c :: test_dai_formats
44c601fdf5SKuninori Morimoto */
45c601fdf5SKuninori Morimoto/ {
46c601fdf5SKuninori Morimoto	/*
47c601fdf5SKuninori Morimoto	 * @ : used at links
48c601fdf5SKuninori Morimoto	 *
49c601fdf5SKuninori Morimoto	 * [Normal]
50c601fdf5SKuninori Morimoto	 *	cpu0 <-@-----------------> codec0
515279bd8aSKuninori Morimoto	 *
52ca27441eSKuninori Morimoto	 * [Semi-Multi]
53ca27441eSKuninori Morimoto	 *
54ca27441eSKuninori Morimoto	 * CPU:Codec = 1:N
55ca27441eSKuninori Morimoto	 *
56ca27441eSKuninori Morimoto	 *			+-+
57ca27441eSKuninori Morimoto	 *	cpu7 <-@------->| |-> codec12
58ca27441eSKuninori Morimoto	 *			| |-> codec13
59ca27441eSKuninori Morimoto	 *			+-+
60ca27441eSKuninori Morimoto	 *
615279bd8aSKuninori Morimoto	 * [Multi-CPU/Codec]
625279bd8aSKuninori Morimoto	 *		+-+		+-+
635279bd8aSKuninori Morimoto	 *	cpu1 <--| |<-@--------->| |-> codec1
645279bd8aSKuninori Morimoto	 *	cpu2 <--| |		| |-> codec2
655279bd8aSKuninori Morimoto	 *		+-+		+-+
66e781759aSKuninori Morimoto	 *
67e781759aSKuninori Morimoto	 * [DPCM]
682dc025abSKuninori Morimoto	 *
692dc025abSKuninori Morimoto	 *	CPU3/CPU4 are converting rate to 44100
702dc025abSKuninori Morimoto	 *
71e781759aSKuninori Morimoto	 *	FE		BE
72e781759aSKuninori Morimoto	 *		  ****
73e781759aSKuninori Morimoto	 *	cpu3 <-@--*  *--@-> codec3
742dc025abSKuninori Morimoto	 *	cpu4 <-@--*  *  (44.1kHz)
75e781759aSKuninori Morimoto	 *		  ****
76cb2d94aaSKuninori Morimoto	 *
77cb2d94aaSKuninori Morimoto	 * [DPCM-Multi]
78cb2d94aaSKuninori Morimoto	 *
79cb2d94aaSKuninori Morimoto	 * --NOTE--
80cb2d94aaSKuninori Morimoto	 * Multi-FE is not supported by ASoC.
81cb2d94aaSKuninori Morimoto	 *
82cb2d94aaSKuninori Morimoto	 *	FE		BE
83cb2d94aaSKuninori Morimoto	 *		  ****	    +-+
84cb2d94aaSKuninori Morimoto	 *	cpu5 <-@--*  *--@-> | | -> codec4
85cb2d94aaSKuninori Morimoto	 *	cpu6 <-@--*  *	    | | -> codec5
86cb2d94aaSKuninori Morimoto	 *		  ****	    +-+
87349b15efSKuninori Morimoto	 *
88349b15efSKuninori Morimoto	 * [Codec2Codec]
89349b15efSKuninori Morimoto	 *			   +-@-> codec6
90349b15efSKuninori Morimoto	 *			   |
91349b15efSKuninori Morimoto	 *			   +---> codec7
92baa274dbSKuninori Morimoto	 *
93baa274dbSKuninori Morimoto	 * [Codec2Codec-Multi]
94baa274dbSKuninori Morimoto	 *
95baa274dbSKuninori Morimoto	 * --NOTE--
96baa274dbSKuninori Morimoto	 * Multi connect N:M is not supported by ASoC.
97baa274dbSKuninori Morimoto	 *
98baa274dbSKuninori Morimoto	 *				+-+
99baa274dbSKuninori Morimoto	 *			   +-@->| |-> codec8
100baa274dbSKuninori Morimoto	 *			   |	| |-> codec9
101baa274dbSKuninori Morimoto	 *			   |	+-+
102baa274dbSKuninori Morimoto	 *			   |	+-+
103baa274dbSKuninori Morimoto	 *			   +--->| |-> codec10
104baa274dbSKuninori Morimoto	 *				| |-> codec11
105baa274dbSKuninori Morimoto	 *				+-+
106c601fdf5SKuninori Morimoto	 */
107c601fdf5SKuninori Morimoto	audio-graph-card2-custom-sample {
108c601fdf5SKuninori Morimoto		/*
109c601fdf5SKuninori Morimoto		 * You can use audio-graph-card2 directly by using
110c601fdf5SKuninori Morimoto		 *
111c601fdf5SKuninori Morimoto		 * compatible = "audio-graph-card2";
112c601fdf5SKuninori Morimoto		 */
113c601fdf5SKuninori Morimoto		compatible = "audio-graph-card2-custom-sample";
114c601fdf5SKuninori Morimoto
115e781759aSKuninori Morimoto			/* for [DPCM]		   */
116e781759aSKuninori Morimoto			/* BE			FE */
117e781759aSKuninori Morimoto		routing = "TC DAI3 Playback",	"DAI3 Playback",
118e781759aSKuninori Morimoto			  "TC DAI3 Playback",	"DAI4 Playback",
119e781759aSKuninori Morimoto			  "DAI3 Capture",	"TC DAI3 Capture",
120cb2d94aaSKuninori Morimoto			  "DAI4 Capture",	"TC DAI3 Capture",
121cb2d94aaSKuninori Morimoto			/* for [DPCM-Multi]	   */
122cb2d94aaSKuninori Morimoto			/* BE			FE */
123cb2d94aaSKuninori Morimoto			  "TC DAI4 Playback",	"DAI5 Playback",
124cb2d94aaSKuninori Morimoto			  "TC DAI5 Playback",	"DAI5 Playback",
125cb2d94aaSKuninori Morimoto			  "TC DAI4 Playback",	"DAI6 Playback",
126cb2d94aaSKuninori Morimoto			  "TC DAI5 Playback",	"DAI6 Playback",
127cb2d94aaSKuninori Morimoto			  "DAI5 Capture",	"TC DAI4 Capture",
128cb2d94aaSKuninori Morimoto			  "DAI5 Capture",	"TC DAI5 Capture",
129cb2d94aaSKuninori Morimoto			  "DAI6 Capture",	"TC DAI4 Capture",
130349b15efSKuninori Morimoto			  "DAI6 Capture",	"TC DAI5 Capture",
131349b15efSKuninori Morimoto			/* for [Codec2Codec] */
132349b15efSKuninori Morimoto			  "TC OUT",		"TC DAI7 Playback",
133baa274dbSKuninori Morimoto			  "TC DAI6 Capture",	"TC IN",
134baa274dbSKuninori Morimoto			/* for [Codec2Codec-Multi] */
135baa274dbSKuninori Morimoto			  "TC OUT",		"TC DAI10 Playback",
136baa274dbSKuninori Morimoto			  "TC DAI8 Capture",	"TC IN",
137baa274dbSKuninori Morimoto			  "TC OUT",		"TC DAI11 Playback",
138baa274dbSKuninori Morimoto			  "TC DAI9 Capture",	"TC IN";
139e781759aSKuninori Morimoto
140d33083f9SKuninori Morimoto		links = <
141d33083f9SKuninori Morimoto			/*
142d33083f9SKuninori Morimoto			 * [Normal]: cpu side only
143d33083f9SKuninori Morimoto			 * cpu0/codec0
144d33083f9SKuninori Morimoto			 */
145d33083f9SKuninori Morimoto			 &cpu0
146d33083f9SKuninori Morimoto
147ca27441eSKuninori Morimoto			/* [Semi-Multi] */
148ca27441eSKuninori Morimoto			&sm0
149ca27441eSKuninori Morimoto
150d33083f9SKuninori Morimoto			/*
151d33083f9SKuninori Morimoto			 * [Multi-CPU/Codec]: cpu side only
152d33083f9SKuninori Morimoto			 * cpu1/cpu2/codec1/codec2
153d33083f9SKuninori Morimoto			 */
154d33083f9SKuninori Morimoto			 &mcpu0
155d33083f9SKuninori Morimoto
156d33083f9SKuninori Morimoto			/*
157d33083f9SKuninori Morimoto			 * [DPCM]: both FE / BE
158d33083f9SKuninori Morimoto			 * cpu3/cpu4/codec3
159d33083f9SKuninori Morimoto			 */
160d33083f9SKuninori Morimoto			 &fe00 &fe01 &be0
161d33083f9SKuninori Morimoto
162d33083f9SKuninori Morimoto			/*
163d33083f9SKuninori Morimoto			 * [DPCM-Multi]: both FE / BE
164d33083f9SKuninori Morimoto			 * cpu5/cpu6/codec4/codec5
165d33083f9SKuninori Morimoto			 */
166d33083f9SKuninori Morimoto			 &fe10 &fe11 &be1
167d33083f9SKuninori Morimoto
168d33083f9SKuninori Morimoto			/*
169d33083f9SKuninori Morimoto			 * [Codec2Codec]: cpu side only
170d33083f9SKuninori Morimoto			 * codec6/codec7
171d33083f9SKuninori Morimoto			 */
172d33083f9SKuninori Morimoto			 &c2c
173d33083f9SKuninori Morimoto
174d33083f9SKuninori Morimoto			/*
175d33083f9SKuninori Morimoto			 * [Codec2Codec-Multi]: cpu side only
176d33083f9SKuninori Morimoto			 * codec8/codec9/codec10/codec11
177d33083f9SKuninori Morimoto			 */
178d33083f9SKuninori Morimoto			 &c2c_m
179c601fdf5SKuninori Morimoto		>;
1805279bd8aSKuninori Morimoto
1815279bd8aSKuninori Morimoto		multi {
182fd6f2236SKuninori Morimoto			#address-cells = <1>;
183fd6f2236SKuninori Morimoto			#size-cells = <0>;
184fd6f2236SKuninori Morimoto
1855279bd8aSKuninori Morimoto			ports@0 {
186fd6f2236SKuninori Morimoto				reg = <0>;
187fd6f2236SKuninori Morimoto				#address-cells = <1>;
188fd6f2236SKuninori Morimoto				#size-cells = <0>;
189d33083f9SKuninori Morimoto			/* [Multi-CPU] */
190fd6f2236SKuninori Morimoto			mcpu0:	port@0 { reg = <0>; mcpu0_ep: endpoint { remote-endpoint = <&mcodec0_ep>; }; };
191fd6f2236SKuninori Morimoto				port@1 { reg = <1>; mcpu1_ep: endpoint { remote-endpoint = <&cpu1_ep>;    }; };
192fd6f2236SKuninori Morimoto				port@2 { reg = <2>; mcpu2_ep: endpoint { remote-endpoint = <&cpu2_ep>;    }; };
1935279bd8aSKuninori Morimoto			};
194d33083f9SKuninori Morimoto
195d33083f9SKuninori Morimoto			/* [Multi-Codec] */
1965279bd8aSKuninori Morimoto			ports@1 {
197fd6f2236SKuninori Morimoto				reg = <1>;
198fd6f2236SKuninori Morimoto				#address-cells = <1>;
199fd6f2236SKuninori Morimoto				#size-cells = <0>;
200fd6f2236SKuninori Morimoto				port@0 { reg = <0>; mcodec0_ep: endpoint { remote-endpoint = <&mcpu0_ep>;  }; };
201fd6f2236SKuninori Morimoto				port@1 { reg = <1>; mcodec1_ep: endpoint { remote-endpoint = <&codec1_ep>; }; };
202fd6f2236SKuninori Morimoto				port@2 { reg = <2>; mcodec2_ep: endpoint { remote-endpoint = <&codec2_ep>; }; };
2035279bd8aSKuninori Morimoto			};
204d33083f9SKuninori Morimoto
205d33083f9SKuninori Morimoto			/* [DPCM-Multi]::BE */
206cb2d94aaSKuninori Morimoto			ports@2 {
207fd6f2236SKuninori Morimoto				reg = <2>;
208fd6f2236SKuninori Morimoto				#address-cells = <1>;
209fd6f2236SKuninori Morimoto				#size-cells = <0>;
210fd6f2236SKuninori Morimoto				port@0 { reg = <0>; mbe_ep:  endpoint { remote-endpoint = <&be10_ep>;  }; };
211fd6f2236SKuninori Morimoto				port@1 { reg = <1>; mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; }; };
212fd6f2236SKuninori Morimoto				port@2 { reg = <2>; mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; }; };
213cb2d94aaSKuninori Morimoto			};
214d33083f9SKuninori Morimoto
215d33083f9SKuninori Morimoto			/* [Codec2Codec-Multi]::CPU */
216baa274dbSKuninori Morimoto			ports@3 {
217fd6f2236SKuninori Morimoto				reg = <3>;
218fd6f2236SKuninori Morimoto				#address-cells = <1>;
219fd6f2236SKuninori Morimoto				#size-cells = <0>;
220fd6f2236SKuninori Morimoto				port@0 { reg = <0>; mc2c0_ep:  endpoint { remote-endpoint = <&c2cmf_ep>;  }; };
221fd6f2236SKuninori Morimoto				port@1 { reg = <1>; mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; }; };
222fd6f2236SKuninori Morimoto				port@2 { reg = <2>; mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; }; };
223baa274dbSKuninori Morimoto			};
224d33083f9SKuninori Morimoto
225d33083f9SKuninori Morimoto			/* [Codec2Codec-Multi]::Codec */
226baa274dbSKuninori Morimoto			ports@4 {
227fd6f2236SKuninori Morimoto				reg = <4>;
228fd6f2236SKuninori Morimoto				#address-cells = <1>;
229fd6f2236SKuninori Morimoto				#size-cells = <0>;
230fd6f2236SKuninori Morimoto				port@0 { reg = <0>; mc2c1_ep:  endpoint { remote-endpoint = <&c2cmb_ep>;  }; };
231fd6f2236SKuninori Morimoto				port@1 { reg = <1>; mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; }; };
232fd6f2236SKuninori Morimoto				port@2 { reg = <2>; mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; }; };
233baa274dbSKuninori Morimoto			};
234ca27441eSKuninori Morimoto
235ca27441eSKuninori Morimoto			/* [Semi-Multi] */
236ca27441eSKuninori Morimoto			ports@5 {
237fd6f2236SKuninori Morimoto				reg = <5>;
238fd6f2236SKuninori Morimoto				#address-cells = <1>;
239fd6f2236SKuninori Morimoto				#size-cells = <0>;
240fd6f2236SKuninori Morimoto				port@0 { reg = <0>; smcodec0_ep: endpoint { remote-endpoint = <&cpu7_ep>;    }; };
241fd6f2236SKuninori Morimoto				port@1 { reg = <1>; smcodec1_ep: endpoint { remote-endpoint = <&codec12_ep>; }; };
242fd6f2236SKuninori Morimoto				port@2 { reg = <2>; smcodec2_ep: endpoint { remote-endpoint = <&codec13_ep>; }; };
243ca27441eSKuninori Morimoto			};
2445279bd8aSKuninori Morimoto		};
245e781759aSKuninori Morimoto
246e781759aSKuninori Morimoto		dpcm {
247fd6f2236SKuninori Morimoto			#address-cells = <1>;
248fd6f2236SKuninori Morimoto			#size-cells = <0>;
249fd6f2236SKuninori Morimoto
250e781759aSKuninori Morimoto			ports@0 {
251fd6f2236SKuninori Morimoto				reg = <0>;
252fd6f2236SKuninori Morimoto
253fd6f2236SKuninori Morimoto				#address-cells = <1>;
254fd6f2236SKuninori Morimoto				#size-cells = <0>;
255d33083f9SKuninori Morimoto			/* [DPCM]::FE */
256fd6f2236SKuninori Morimoto			fe00:	port@0 { reg = <0>; fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; };
257fd6f2236SKuninori Morimoto			fe01:	port@1 { reg = <1>; fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; };
258d33083f9SKuninori Morimoto
259d33083f9SKuninori Morimoto			/* [DPCM-Multi]::FE */
260fd6f2236SKuninori Morimoto			fe10:	port@2 { reg = <2>; fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; };
261fd6f2236SKuninori Morimoto			fe11:	port@3 { reg = <3>; fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; };
262e781759aSKuninori Morimoto			};
263d33083f9SKuninori Morimoto
264e781759aSKuninori Morimoto			ports@1 {
265fd6f2236SKuninori Morimoto				reg = <1>;
266fd6f2236SKuninori Morimoto
267fd6f2236SKuninori Morimoto				#address-cells = <1>;
268fd6f2236SKuninori Morimoto				#size-cells = <0>;
269d33083f9SKuninori Morimoto			/* [DPCM]::BE */
270fd6f2236SKuninori Morimoto			be0:	port@0 { reg = <0>; be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; };
271d33083f9SKuninori Morimoto
272d33083f9SKuninori Morimoto			/* [DPCM-Multi]::BE */
273fd6f2236SKuninori Morimoto			be1:	port@1 { reg = <1>; be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; };
274e781759aSKuninori Morimoto			};
275e781759aSKuninori Morimoto		};
276349b15efSKuninori Morimoto
277349b15efSKuninori Morimoto		codec2codec {
278fd6f2236SKuninori Morimoto			#address-cells = <1>;
279fd6f2236SKuninori Morimoto			#size-cells = <0>;
280d33083f9SKuninori Morimoto			/* [Codec2Codec] */
281349b15efSKuninori Morimoto			ports@0 {
282fd6f2236SKuninori Morimoto				reg = <0>;
283fd6f2236SKuninori Morimoto
284fd6f2236SKuninori Morimoto				#address-cells = <1>;
285fd6f2236SKuninori Morimoto				#size-cells = <0>;
286fd6f2236SKuninori Morimoto
287c2ff7f15SKuninori Morimoto				/* use default settings */
288fd6f2236SKuninori Morimoto			c2c:	port@0 { reg = <0>; c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; };
289fd6f2236SKuninori Morimoto				port@1 { reg = <1>; c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; };
290349b15efSKuninori Morimoto			};
291d33083f9SKuninori Morimoto
292d33083f9SKuninori Morimoto			/* [Codec2Codec-Multi] */
293baa274dbSKuninori Morimoto			ports@1 {
294fd6f2236SKuninori Morimoto				reg = <1>;
295fd6f2236SKuninori Morimoto
296fd6f2236SKuninori Morimoto				#address-cells = <1>;
297fd6f2236SKuninori Morimoto				#size-cells = <0>;
298fd6f2236SKuninori Morimoto
299c2ff7f15SKuninori Morimoto				/* use original settings */
300baa274dbSKuninori Morimoto				rate = <48000>;
301fd6f2236SKuninori Morimoto			c2c_m:	port@0 { reg = <0>; c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; };
302fd6f2236SKuninori Morimoto				port@1 { reg = <1>; c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; };
303baa274dbSKuninori Morimoto			};
304349b15efSKuninori Morimoto		};
305c601fdf5SKuninori Morimoto	};
306c601fdf5SKuninori Morimoto
307c601fdf5SKuninori Morimoto	test_cpu {
308c601fdf5SKuninori Morimoto		/*
309c601fdf5SKuninori Morimoto		 * update compatible to indicate more detail behaviour
310c601fdf5SKuninori Morimoto		 * if you want. see test-compatible for more detail.
311c601fdf5SKuninori Morimoto		 *
312c601fdf5SKuninori Morimoto		 * ex)
313c601fdf5SKuninori Morimoto		 *	- compatible = "test-cpu";
314c601fdf5SKuninori Morimoto		 *	+ compatible = "test-cpu-verbose";
315c601fdf5SKuninori Morimoto		 */
316c601fdf5SKuninori Morimoto		compatible = "test-cpu";
317c601fdf5SKuninori Morimoto		ports {
318fd6f2236SKuninori Morimoto			#address-cells = <1>;
319fd6f2236SKuninori Morimoto			#size-cells = <0>;
320fd6f2236SKuninori Morimoto
321c601fdf5SKuninori Morimoto			bitclock-master;
322c601fdf5SKuninori Morimoto			frame-master;
323d33083f9SKuninori Morimoto			/* [Normal] */
324fd6f2236SKuninori Morimoto			cpu0: port@0 { reg = <0>; cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; };
325d33083f9SKuninori Morimoto
326d33083f9SKuninori Morimoto			/* [Multi-CPU] */
327fd6f2236SKuninori Morimoto			      port@1 { reg = <1>; cpu1_ep: endpoint { remote-endpoint = <&mcpu1_ep>; }; };
328fd6f2236SKuninori Morimoto			      port@2 { reg = <2>; cpu2_ep: endpoint { remote-endpoint = <&mcpu2_ep>; }; };
329d33083f9SKuninori Morimoto
330d33083f9SKuninori Morimoto			/* [DPCM]::FE */
331fd6f2236SKuninori Morimoto			      port@3 { reg = <3>; cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; };
332fd6f2236SKuninori Morimoto			      port@4 { reg = <4>; cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; };
333d33083f9SKuninori Morimoto
334d33083f9SKuninori Morimoto			/* [DPCM-Multi]::FE */
335fd6f2236SKuninori Morimoto			      port@5 { reg = <5>; cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; };
336fd6f2236SKuninori Morimoto			      port@6 { reg = <6>; cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; };
337ca27441eSKuninori Morimoto
338ca27441eSKuninori Morimoto			/* [Semi-Multi] */
339fd6f2236SKuninori Morimoto			sm0:  port@7 { reg = <7>; cpu7_ep: endpoint { remote-endpoint = <&smcodec0_ep>; }; };
340c601fdf5SKuninori Morimoto		};
341c601fdf5SKuninori Morimoto	};
342c601fdf5SKuninori Morimoto
343c601fdf5SKuninori Morimoto	test_codec {
344c601fdf5SKuninori Morimoto		/*
345c601fdf5SKuninori Morimoto		 * update compatible to indicate more detail behaviour
346c601fdf5SKuninori Morimoto		 * if you want. see test-compatible for more detail.
347c601fdf5SKuninori Morimoto		 *
348c601fdf5SKuninori Morimoto		 * ex)
349c601fdf5SKuninori Morimoto		 *	- compatible = "test-codec";
350c601fdf5SKuninori Morimoto		 *	+ compatible = "test-codec-verbose";
351c601fdf5SKuninori Morimoto		 */
352c601fdf5SKuninori Morimoto		compatible = "test-codec";
353c601fdf5SKuninori Morimoto		ports {
354fd6f2236SKuninori Morimoto			#address-cells = <1>;
355fd6f2236SKuninori Morimoto			#size-cells = <0>;
356fd6f2236SKuninori Morimoto
357e781759aSKuninori Morimoto			/*
358e781759aSKuninori Morimoto			 * prefix can be added to *component*,
359e781759aSKuninori Morimoto			 * see audio-graph-card2::routing
360e781759aSKuninori Morimoto			 */
361e781759aSKuninori Morimoto			prefix = "TC";
362e781759aSKuninori Morimoto
363d33083f9SKuninori Morimoto			/* [Normal] */
364fd6f2236SKuninori Morimoto			port@0  { reg = <0>; codec0_ep:  endpoint { remote-endpoint = <&cpu0_ep>; }; };
365d33083f9SKuninori Morimoto
366d33083f9SKuninori Morimoto			/* [Multi-Codec] */
367fd6f2236SKuninori Morimoto			port@1  { reg = <1>; codec1_ep:  endpoint { remote-endpoint = <&mcodec1_ep>; }; };
368fd6f2236SKuninori Morimoto			port@2  { reg = <2>; codec2_ep:  endpoint { remote-endpoint = <&mcodec2_ep>; }; };
369d33083f9SKuninori Morimoto
370d33083f9SKuninori Morimoto			/* [DPCM]::BE */
3712dc025abSKuninori Morimoto			port@3  {
3722dc025abSKuninori Morimoto				convert-rate = <44100>;
373fd6f2236SKuninori Morimoto				reg = <3>; codec3_ep:  endpoint { remote-endpoint = <&be00_ep>; };
3742dc025abSKuninori Morimoto			};
375d33083f9SKuninori Morimoto
376d33083f9SKuninori Morimoto			/* [DPCM-Multi]::BE */
377fd6f2236SKuninori Morimoto			port@4  { reg = <4>; codec4_ep:  endpoint { remote-endpoint = <&mbe1_ep>; }; };
378fd6f2236SKuninori Morimoto			port@5  { reg = <5>; codec5_ep:  endpoint { remote-endpoint = <&mbe2_ep>; }; };
379d33083f9SKuninori Morimoto
380d33083f9SKuninori Morimoto			/* [Codec2Codec] */
381349b15efSKuninori Morimoto			port@6  { bitclock-master;
382349b15efSKuninori Morimoto				  frame-master;
383fd6f2236SKuninori Morimoto				  reg = <6>; codec6_ep:  endpoint { remote-endpoint = <&c2cf_ep>; }; };
384fd6f2236SKuninori Morimoto			port@7  { reg = <7>; codec7_ep:  endpoint { remote-endpoint = <&c2cb_ep>; }; };
385d33083f9SKuninori Morimoto
386d33083f9SKuninori Morimoto			/* [Codec2Codec-Multi] */
387baa274dbSKuninori Morimoto			port@8  { bitclock-master;
388baa274dbSKuninori Morimoto				  frame-master;
389fd6f2236SKuninori Morimoto				  reg = <8>;  codec8_ep:  endpoint { remote-endpoint = <&mc2c00_ep>; }; };
390fd6f2236SKuninori Morimoto			port@9  { reg = <9>;  codec9_ep:  endpoint { remote-endpoint = <&mc2c01_ep>; }; };
391fd6f2236SKuninori Morimoto			port@a  { reg = <10>; codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; };
392fd6f2236SKuninori Morimoto			port@b  { reg = <11>; codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; };
393ca27441eSKuninori Morimoto
394ca27441eSKuninori Morimoto			/* [Semi-Multi] */
395fd6f2236SKuninori Morimoto			port@c { reg = <12>; codec12_ep: endpoint { remote-endpoint = <&smcodec1_ep>; }; };
396fd6f2236SKuninori Morimoto			port@d { reg = <13>; codec13_ep: endpoint { remote-endpoint = <&smcodec2_ep>; }; };
397fd6f2236SKuninori Morimoto
398c601fdf5SKuninori Morimoto		};
399c601fdf5SKuninori Morimoto	};
400c601fdf5SKuninori Morimoto};
401