Unverified Commit 56e8bbb7 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: audio-graph-card2-custom-sample: Separate Sample

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

audio-graph-card2-custom-sample has many sample connections, but because
ALSA card has number limition for links, it is impossible to have all
samples into 1 ASoC card.

This patch-set separate sample DT into 2 parts, and remove original sample.
Because of this separation, we can see all sample connection via multi Card.

	- for normal
	- for DPCM/Codec2Codec
parents 8243a491 7d73a1be
Loading
Loading
Loading
Loading
+0 −702
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/*
 * audio-graph-card2-custom-sample.dtsi
 *
 * Copyright (C) 2020 Renesas Electronics Corp.
 * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 *
 * This sample indicates how to use audio-graph-card2 and its
 * custom driver. "audio-graph-card2-custom-sample" is the custome driver
 * which is using audio-graph-card2.
 *
 * You can easily use this sample by adding below line on your DT file,
 * and add new CONFIG to your .config.
 *
 *	#include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi"
 *
 *	CONFIG_SND_AUDIO_GRAPH_CARD2
 *	CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE
 *	CONFIG_SND_TEST_COMPONENT
 *
 *
 * You can indicate more detail each device behavior as debug if you modify
 * "compatible" on each test-component. see below
 *
 *	test_cpu {
 *	-	compatible = "test-cpu";
 *	+	compatible = "test-cpu-verbose";
 *		...
 *	};
 *
 *	test_codec {
 *	-	compatible = "test-codec";
 *	+	compatible = "test-codec-verbose";
 *		...
 *	};
 *
 *
 * Below sample doesn't use "format" property,
 * because test-component driver (test-cpu/test-codec) is supporting
 * snd_soc_dai_ops :: .auto_selectable_formats.
 * see
 *	snd_soc_runtime_get_dai_fmt()
 *	linux/sound/soc/generic/test-component.c :: test_dai_formats
 */
/ {
	/*
	 * @ : used at links
	 *
	 * [Normal]
	 *	cpu0 <-@-----------------> codec0
	 *
	 * [Semi-Multi]
	 *
	 * CPU:Codec = 1:N
	 *
	 *			+-+
	 *	cpu7 <-@------->| |-> codec12
	 *			| |-> codec13
	 *			+-+
	 *
	 * [Multi-CPU/Codec-0]
	 *		+-+		+-+
	 *	cpu1 <--| |<-@--------->| |-> codec1
	 *	cpu2 <--| |		| |-> codec2
	 *		+-+		+-+
	 *
	 * [Multi-CPU/Codec-1]
	 *
	 *		+-+		+-+
	 *		| |<-@--------->| |
	 *		| |		| |
	 *	cpu8 <--| |<----------->| |-> codec14
	 *	cpu9 <--| |<---+------->| |-> codec15
	 *		+-+	\------>| |-> codec16
	 *				+-+
	 *
	 * [Multi-CPU/Codec-2]
	 *
	 *		+-+		+-+
	 *		| |<-@--------->| |
	 *		| |		| |
	 *	cpu10 <-| |<----------->| |-> codec17
	 *	cpu11 <-| |<-----+----->| |-> codec18
	 *	cpu12 <-| |<----/	+-+
	 *		+-+
	 *
	 * [DPCM]
	 *
	 *	CPU3/CPU4 are converting rate to 44100
	 *
	 *	FE		BE
	 *		  ****
	 *	cpu3 <-@--*  *--@-> codec3
	 *	cpu4 <-@--*  *  (44.1kHz)
	 *		  ****
	 *
	 * [DPCM-Multi]
	 *
	 * --NOTE--
	 * Multi-FE is not supported by ASoC.
	 *
	 *	FE		BE
	 *		  ****	    +-+
	 *	cpu5 <-@--*  *--@-> | | -> codec4
	 *	cpu6 <-@--*  *	    | | -> codec5
	 *		  ****	    +-+
	 *
	 * [Codec2Codec]
	 *			   +-@-> codec6
	 *			   |
	 *			   +---> codec7
	 *
	 * [Codec2Codec-Multi]
	 *
	 * --NOTE--
	 * Multi connect N:M is not supported by ASoC.
	 *
	 *				+-+
	 *			   +-@->| |-> codec8
	 *			   |	| |-> codec9
	 *			   |	+-+
	 *			   |	+-+
	 *			   +--->| |-> codec10
	 *				| |-> codec11
	 *				+-+
	 */
	audio-graph-card2-custom-sample {
		/*
		 * You can use audio-graph-card2 directly by using
		 *
		 * compatible = "audio-graph-card2";
		 */
		compatible = "audio-graph-card2-custom-sample";

			/* for [DPCM]		   */
			/* BE			FE */
		routing = "TC DAI3 Playback",	"DAI3 Playback",
			  "TC DAI3 Playback",	"DAI4 Playback",
			  "DAI3 Capture",	"TC DAI3 Capture",
			  "DAI4 Capture",	"TC DAI3 Capture",
			/* for [DPCM-Multi]	   */
			/* BE			FE */
			  "TC DAI4 Playback",	"DAI5 Playback",
			  "TC DAI5 Playback",	"DAI5 Playback",
			  "TC DAI4 Playback",	"DAI6 Playback",
			  "TC DAI5 Playback",	"DAI6 Playback",
			  "DAI5 Capture",	"TC DAI4 Capture",
			  "DAI5 Capture",	"TC DAI5 Capture",
			  "DAI6 Capture",	"TC DAI4 Capture",
			  "DAI6 Capture",	"TC DAI5 Capture",
			/* for [Codec2Codec] */
			  "TC OUT",		"TC DAI7 Playback",
			  "TC DAI6 Capture",	"TC IN",
			/* for [Codec2Codec-Multi] */
			  "TC OUT",		"TC DAI10 Playback",
			  "TC DAI8 Capture",	"TC IN",
			  "TC OUT",		"TC DAI11 Playback",
			  "TC DAI9 Capture",	"TC IN";

		links = <
			/*
			 * [Normal]: cpu side only
			 * cpu0/codec0
			 */
			 &cpu0

			/*
			 * [Semi-Multi]
			 * cpu7/codec12/codec13
			 */
			&sm0

			/*
			 * [Multi-CPU/Codec-0]: cpu side only
			 * cpu1/cpu2/codec1/codec2
			 */
			 &mcpu0

			/*
			 * [Multi-CPU/Codec-1]: cpu side only
			 * cpu8/cpu9/codec14/codec15/codec16
			 *
			 * Because it will reach to the maximum of sound minor number,
			 * disable it so far.
			 * If you want to try it, please disable some other one instead.
			 */
			//&mcpu1

			/*
			 * [Multi-CPU/Codec-2]: cpu side only
			 * cpu10/cpu11/cpu12/codec17/codec18
			 *
			 * Because it will reach to the maximum of sound minor number,
			 * disable it so far.
			 * If you want to try it, please disable some other one instead.
			 */
			//&mcpu2

			/*
			 * [DPCM]: both FE / BE
			 * cpu3/cpu4/codec3
			 */
			 &fe00 &fe01 &be0

			/*
			 * [DPCM-Multi]: both FE / BE
			 * cpu5/cpu6/codec4/codec5
			 */
			 &fe10 &fe11 &be1

			/*
			 * [Codec2Codec]: cpu side only
			 * codec6/codec7
			 */
			 &c2c

			/*
			 * [Codec2Codec-Multi]: cpu side only
			 * codec8/codec9/codec10/codec11
			 */
			 &c2c_m
		>;

		multi {
			#address-cells = <1>;
			#size-cells = <0>;

			/*
			 * [Multi-CPU-0]
			 *
			 *		+---+		+---+
			 *	cpu1 <--|A X|<-@------->|x a|-> codec1
			 *	cpu2 <--|B  |		|  b|-> codec2
			 *		+---+		+---+
			 */
			ports@0 {
				reg = <0>;
				#address-cells = <1>;
				#size-cells = <0>;
			mcpu0:	port@0 { reg = <0>; mcpu00_ep: endpoint { remote-endpoint = <&mcodec00_ep>; };};/* (X) to pair */
				port@1 { reg = <1>; mcpu01_ep: endpoint { remote-endpoint = <&cpu1_ep>;     };};/* (A) Multi Element */
				port@2 { reg = <2>; mcpu02_ep: endpoint { remote-endpoint = <&cpu2_ep>;     };};/* (B) Multi Element */
			};

			/*
			 * [Multi-Codec-0]
			 *
			 *		+---+		+---+
			 *	cpu1 <--|A X|<-@------->|x a|-> codec1
			 *	cpu2 <--|B  |		|  b|-> codec2
			 *		+---+		+---+
			 */
			ports@1 {
				reg = <1>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; mcodec00_ep: endpoint { remote-endpoint = <&mcpu00_ep>; };};/* (x) to pair */
				port@1 { reg = <1>; mcodec01_ep: endpoint { remote-endpoint = <&codec1_ep>; };};/* (a) Multi Element */
				port@2 { reg = <2>; mcodec02_ep: endpoint { remote-endpoint = <&codec2_ep>; };};/* (b) Multi Element */
			};

			/*
			 * [DPCM-Multi]::BE
			 *
			 *	FE			BE
			 *		  ****		+---+
			 *	cpu5 <-@--*  *-----@--->|x a|-> codec4
			 *	cpu6 <-@--*  *		|  b|-> codec5
			 *		  ****		+---+
			 */
			ports@2 {
				reg = <2>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; mbe_ep:  endpoint { remote-endpoint = <&be10_ep>;   };};/* (x) to pair */
				port@1 { reg = <1>; mbe1_ep: endpoint { remote-endpoint = <&codec4_ep>; };};/* (a) Multi Element */
				port@2 { reg = <2>; mbe2_ep: endpoint { remote-endpoint = <&codec5_ep>; };};/* (b) Multi Element */
			};

			/*
			 * [Codec2Codec-Multi]::CPU
			 *
			 *		+---+
			 *	   +-@->|X A|-> codec8
			 *	   |	|  B|-> codec9
			 *	   |	+---+
			 *	   |	+---+
			 *	   +--->|x a|-> codec10
			 *		|  b|-> codec11
			 *		+---+
			 */
			ports@3 {
				reg = <3>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; mc2c0_ep:  endpoint { remote-endpoint = <&c2cmf_ep>;  };};/* (X) to pair */
				port@1 { reg = <1>; mc2c00_ep: endpoint { remote-endpoint = <&codec8_ep>; };};/* (A) Multi Element */
				port@2 { reg = <2>; mc2c01_ep: endpoint { remote-endpoint = <&codec9_ep>; };};/* (B) Multi Element */
			};

			/*
			 * [Codec2Codec-Multi]::Codec
			 *
			 *		+---+
			 *	   +-@->|X A|-> codec8
			 *	   |	|  B|-> codec9
			 *	   |	+---+
			 *	   |	+---+
			 *	   +--->|x a|-> codec10
			 *		|  b|-> codec11
			 *		+---+
			 */
			ports@4 {
				reg = <4>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; mc2c1_ep:  endpoint { remote-endpoint = <&c2cmb_ep>;   };};/* (x) to pair */
				port@1 { reg = <1>; mc2c10_ep: endpoint { remote-endpoint = <&codec10_ep>; };};/* (a) Multi Element */
				port@2 { reg = <2>; mc2c11_ep: endpoint { remote-endpoint = <&codec11_ep>; };};/* (b) Multi Element */
			};

			/*
			 * [Semi-Multi]
			 *
			 *			+---+
			 *	cpu7 <-@------->|X A|-> codec12
			 *			|  B|-> codec13
			 *			+---+
			 */
			ports@5 {
				reg = <5>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; smcodec0_ep: endpoint { remote-endpoint = <&cpu7_ep>;    };};/* (X) to pair */
				port@1 { reg = <1>; smcodec1_ep: endpoint { remote-endpoint = <&codec12_ep>; };};/* (A) Multi Element */
				port@2 { reg = <2>; smcodec2_ep: endpoint { remote-endpoint = <&codec13_ep>; };};/* (B) Multi Element */
			};

			/*
			 * [Multi-CPU-1]
			 *
			 *		+---+		+---+
			 *		|  X|<-@------->|x  |
			 *		|   |		|   |
			 *	cpu8 <--|A 1|<--------->|3 a|-> codec14
			 *	cpu9 <--|B 2|<---+----->|4 b|-> codec15
			 *		+---+	  \---->|5 c|-> codec16
			 *				+---+
			 */
			ports@6 {
				reg = <6>;
				#address-cells = <1>;
				#size-cells = <0>;
			mcpu1:	port@0 { reg = <0>; mcpu10_ep: endpoint { remote-endpoint = <&mcodec10_ep>; };};    /* (X) to pair */
				port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
					mcpu11_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu8_ep>;       }; /* (A) Multi Element */
					mcpu11_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec11_ep_0>; }; /* (1) connected Codec */
				};
				port@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
					mcpu12_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu9_ep>;       }; /* (B) Multi Element */
					mcpu12_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec12_ep_0>; }; /* (2) connected Codec */
					mcpu12_ep_1: endpoint@2 { reg = <2>; remote-endpoint = <&mcodec13_ep_0>; }; /* (2) connected Codec */
				};
			};

			/*
			 * [Multi-Codec-1]
			 *
			 *		+---+		+---+
			 *		|  X|<-@------->|x  |
			 *		|   |		|   |
			 *	cpu8 <--|A 1|<--------->|3 a|-> codec14
			 *	cpu9 <--|B 2|<---+----->|4 b|-> codec15
			 *		+---+	  \---->|5 c|-> codec16
			 *				+---+
			 */
			ports@7 {
				reg = <7>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; mcodec10_ep: endpoint { remote-endpoint = <&mcpu10_ep>;  };};   /* (x) to pair */
				port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
					mcodec11_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec14_ep>;  }; /* (a) Multi Element */
					mcodec11_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu11_ep_0>; }; /* (3) connected CPU */
				};
				port@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
					mcodec12_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec15_ep>;  }; /* (b) Multi Element */
					mcodec12_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu12_ep_0>; }; /* (4) connected CPU */
				};
				port@3 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <3>;
					mcodec13_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec16_ep>;  }; /* (c) Multi Element */
					mcodec13_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu12_ep_1>; }; /* (5) connected CPU */
				};
			};

			/*
			 * [Multi-CPU-2]
			 *
			 *		+---+		+---+
			 *		|  X|<-@------->|x  |
			 *		|   |		|   |
			 *	cpu10 <-|A 1|<--------->|4 a|-> codec17
			 *	cpu11 <-|B 2|<-----+--->|5 b|-> codec18
			 *	cpu12 <-|C 3|<----/	+---+
			 *		+---+
			 */
			ports@8 {
				reg = <8>;
				#address-cells = <1>;
				#size-cells = <0>;
			mcpu2:	port@0 { reg = <0>; mcpu20_ep: endpoint { remote-endpoint = <&mcodec20_ep>; };};    /* (X) to pair */
				port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
					mcpu21_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu10_ep>;      }; /* (A) Multi Element */
					mcpu21_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec21_ep_0>; }; /* (1) connected Codec */
				};
				port@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
					mcpu22_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu11_ep>;      }; /* (B) Multi Element */
					mcpu22_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec22_ep_0>; }; /* (2) connected Codec */
				};
				port@3 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <3>;
					mcpu23_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu12_ep>;      }; /* (C) Multi Element */
					mcpu23_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec22_ep_1>; }; /* (3) connected Codec */
				};
			};

			/*
			 * [Multi-Codec-2]
			 *
			 *		+---+		+---+
			 *		|  X|<-@------->|x  |
			 *		|   |		|   |
			 *	cpu10 <-|A 1|<--------->|4 a|-> codec17
			 *	cpu11 <-|B 2|<-----+--->|5 b|-> codec18
			 *	cpu12 <-|C 3|<----/	+---+
			 *		+---+
			 */
			ports@9 {
				reg = <9>;
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 { reg = <0>; mcodec20_ep: endpoint { remote-endpoint = <&mcpu20_ep>;  };};   /* (x) to pair */
				port@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
					mcodec21_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec17_ep>;  }; /* (a) Multi Element */
					mcodec21_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu21_ep_0>; }; /* (4) connected CPU */
				};
				port@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
					mcodec22_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec18_ep>;  }; /* (b) Multi Element */
					mcodec22_ep_0: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu22_ep_0>; }; /* (5) connected CPU */
					mcodec22_ep_1: endpoint@2 { reg = <2>; remote-endpoint = <&mcpu23_ep_0>; }; /* (5) connected CPU */
				};
			};
		};

		dpcm {
			#address-cells = <1>;
			#size-cells = <0>;

			ports@0 {
				reg = <0>;

				#address-cells = <1>;
				#size-cells = <0>;
				/*
				 * [DPCM]::FE
				 *
				 *	FE				BE
				 *			****
				 *	cpu3 <-@(fe00)--*  *--(be0)@--> codec3
				 *	cpu4 <-@(fe01)--*  *		(44.1kHz)
				 *			****
				 */
			fe00:	port@0 { reg = <0>; fe00_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; };
			fe01:	port@1 { reg = <1>; fe01_ep: endpoint { remote-endpoint = <&cpu4_ep>; }; };

				/*
				 * [DPCM-Multi]::FE
				 *
				 *		FE			BE
				 *			****		+-+
				 *	cpu5 <-@(fe10)--*  *---(be1)@-->| |-> codec4
				 *	cpu6 <-@(fe11)--*  *		| |-> codec5
				 *			****		+-+
				 */
			fe10:	port@2 { reg = <2>; fe10_ep: endpoint { remote-endpoint = <&cpu5_ep>; }; };
			fe11:	port@3 { reg = <3>; fe11_ep: endpoint { remote-endpoint = <&cpu6_ep>; }; };
			};

			ports@1 {
				reg = <1>;

				#address-cells = <1>;
				#size-cells = <0>;
				/*
				 * [DPCM]::BE
				 *
				 *	FE				BE
				 *			****
				 *	cpu3 <-@(fe00)--*  *--(be0)@--> codec3
				 *	cpu4 <-@(fe01)--*  *		(44.1kHz)
				 *			****
				 */
			be0:	port@0 { reg = <0>; be00_ep: endpoint { remote-endpoint = <&codec3_ep>; }; };

				/*
				 * [DPCM-Multi]::BE
				 *
				 *		FE			BE
				 *			****		+-+
				 *	cpu5 <-@(fe10)--*  *---(be1)@-->| |-> codec4
				 *	cpu6 <-@(fe11)--*  *		| |-> codec5
				 *			****		+-+
				 */
			be1:	port@1 { reg = <1>; be10_ep: endpoint { remote-endpoint = <&mbe_ep>; }; };
			};
		};

		codec2codec {
			#address-cells = <1>;
			#size-cells = <0>;
			/*
			 * [Codec2Codec]
			 *
			 *	+-@(c2c)-> codec6
			 *	|
			 *	+--------> codec7
			 */
			ports@0 {
				reg = <0>;

				#address-cells = <1>;
				#size-cells = <0>;

				/* use default settings */
			c2c:	port@0 { reg = <0>; c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; };
				port@1 { reg = <1>; c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; };
			};

			/*
			 * [Codec2Codec-Multi]
			 *
			 *			+-+
			 *	   +-@(c2c_m)-->| |-> codec8
			 *	   |		| |-> codec9
			 *	   |		+-+
			 *	   |		+-+
			 *	   +----------->| |-> codec10
			 *			| |-> codec11
			 *			+-+
			 */
			ports@1 {
				reg = <1>;

				#address-cells = <1>;
				#size-cells = <0>;

				/* use original settings */
				rate = <48000>;
			c2c_m:	port@0 { reg = <0>; c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; };
				port@1 { reg = <1>; c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; };
			};
		};
	};

	test_cpu {
		/*
		 * update compatible to indicate more detail behaviour
		 * if you want. see test-compatible for more detail.
		 *
		 * ex)
		 *	- compatible = "test-cpu";
		 *	+ compatible = "test-cpu-verbose";
		 */
		compatible = "test-cpu";
		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			bitclock-master;
			frame-master;
			/* [Normal] */
			cpu0: port@0 { reg = <0>; cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; };

			/* [Multi-CPU-0] */
			      port@1 { reg = <1>; cpu1_ep: endpoint { remote-endpoint = <&mcpu01_ep>; }; };
			      port@2 { reg = <2>; cpu2_ep: endpoint { remote-endpoint = <&mcpu02_ep>; }; };

			/* [DPCM]::FE */
			      port@3 { reg = <3>; cpu3_ep: endpoint { remote-endpoint = <&fe00_ep>; }; };
			      port@4 { reg = <4>; cpu4_ep: endpoint { remote-endpoint = <&fe01_ep>; }; };

			/* [DPCM-Multi]::FE */
			      port@5 { reg = <5>; cpu5_ep: endpoint { remote-endpoint = <&fe10_ep>; }; };
			      port@6 { reg = <6>; cpu6_ep: endpoint { remote-endpoint = <&fe11_ep>; }; };

			/* [Semi-Multi] */
			sm0:  port@7 { reg = <7>; cpu7_ep: endpoint { remote-endpoint = <&smcodec0_ep>; }; };

			/* [Multi-CPU-1] */
			      port@8 { reg = <8>; cpu8_ep: endpoint { remote-endpoint = <&mcpu11_ep>;   }; };
			      port@9 { reg = <9>; cpu9_ep: endpoint { remote-endpoint = <&mcpu12_ep>;   }; };
			/* [Multi-CPU-2] */
			      port@a { reg = <10>; cpu10_ep: endpoint { remote-endpoint = <&mcpu21_ep>; }; };
			      port@b { reg = <11>; cpu11_ep: endpoint { remote-endpoint = <&mcpu22_ep>; }; };
			      port@c { reg = <12>; cpu12_ep: endpoint { remote-endpoint = <&mcpu23_ep>; }; };
		};
	};

	test_codec {
		/*
		 * update compatible to indicate more detail behaviour
		 * if you want. see test-compatible for more detail.
		 *
		 * ex)
		 *	- compatible = "test-codec";
		 *	+ compatible = "test-codec-verbose";
		 */
		compatible = "test-codec";
		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			/*
			 * prefix can be added to *component*,
			 * see audio-graph-card2::routing
			 */
			prefix = "TC";

			/* [Normal] */
			port@0  { reg = <0>; codec0_ep:  endpoint { remote-endpoint = <&cpu0_ep>; }; };

			/* [Multi-Codec-0] */
			port@1  { reg = <1>; codec1_ep:  endpoint { remote-endpoint = <&mcodec01_ep>; }; };
			port@2  { reg = <2>; codec2_ep:  endpoint { remote-endpoint = <&mcodec02_ep>; }; };

			/* [DPCM]::BE */
			port@3  {
				convert-rate = <44100>;
				reg = <3>; codec3_ep:  endpoint { remote-endpoint = <&be00_ep>; };
			};

			/* [DPCM-Multi]::BE */
			port@4  { reg = <4>; codec4_ep:  endpoint { remote-endpoint = <&mbe1_ep>; }; };
			port@5  { reg = <5>; codec5_ep:  endpoint { remote-endpoint = <&mbe2_ep>; }; };

			/* [Codec2Codec] */
			port@6  { bitclock-master;
				  frame-master;
				  reg = <6>; codec6_ep:  endpoint { remote-endpoint = <&c2cf_ep>; }; };
			port@7  { reg = <7>; codec7_ep:  endpoint { remote-endpoint = <&c2cb_ep>; }; };

			/* [Codec2Codec-Multi] */
			port@8  { bitclock-master;
				  frame-master;
				  reg = <8>;  codec8_ep:  endpoint { remote-endpoint = <&mc2c00_ep>; }; };
			port@9  { reg = <9>;  codec9_ep:  endpoint { remote-endpoint = <&mc2c01_ep>; }; };
			port@a  { reg = <10>; codec10_ep: endpoint { remote-endpoint = <&mc2c10_ep>; }; };
			port@b  { reg = <11>; codec11_ep: endpoint { remote-endpoint = <&mc2c11_ep>; }; };

			/* [Semi-Multi] */
			port@c { reg = <12>; codec12_ep: endpoint { remote-endpoint = <&smcodec1_ep>; }; };
			port@d { reg = <13>; codec13_ep: endpoint { remote-endpoint = <&smcodec2_ep>; }; };

			/* [Multi-Codec-1] */
			port@e  { reg = <14>; codec14_ep: endpoint { remote-endpoint = <&mcodec11_ep>; }; };
			port@f  { reg = <15>; codec15_ep: endpoint { remote-endpoint = <&mcodec12_ep>; }; };
			port@10 { reg = <16>; codec16_ep: endpoint { remote-endpoint = <&mcodec13_ep>; }; };
			/* [Multi-Codec-2] */
			port@11 { reg = <17>; codec17_ep: endpoint { remote-endpoint = <&mcodec21_ep>; }; };
			port@12 { reg = <18>; codec18_ep: endpoint { remote-endpoint = <&mcodec22_ep>; }; };
		};
	};
};
+396 −0

File added.

Preview size limit exceeded, changes collapsed.

+382 −0

File added.

Preview size limit exceeded, changes collapsed.