// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree for ULCB + Audio Graph Card2 (MIX + TDM Split)
 *
 * Copyright (C) 2022 Renesas Electronics Corp.
 */

/*
 * Note:
 * The HDMI output is ignored due to the limited number of subdevices
 *
 *	(A) CPU0 (2ch) <----> (2ch) (X) ak4613	(MIX-0)
 *	(B) CPU1 (2ch)  --/			(MIX-1)
 *
 *	(A) aplay   -D plughw:0,0 xxx.wav
 *	(B) aplay   -D plughw:0,1 xxx.wav
 *
 *	(A) arecord -D plughw:0,0 xxx.wav
 */
/ {
	sound_card: sound {
		compatible = "audio-graph-card2";
		label = "snd-ulcb-mix";

		routing = "ak4613 Playback", "DAI0 Playback",
			  "ak4613 Playback", "DAI1 Playback",
			  "DAI0 Capture",    "ak4613 Capture";

		links = <&fe_a		/* (A) CPU0   */
			 &fe_b		/* (B) CPU1   */
			 &be_x		/* (X) ak4613 */
		>;

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

			ports@0 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0>;
				/*
				 * FE
				 * (A) CPU0 (MIX-0)
				 * (B) CPU1 (MIX-1)
				 */
				fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; };
				fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; };
			};

			ports@1 {
				reg = <1>;
				/*
				 * BE
				 * (X) ak4613
				 */
				be_x: port { be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; };
			};
		};
	};
};

&ak4613 {
	port {
		/*
		 * (X) ak4613
		 */
		prefix = "ak4613";
		convert-rate = <48000>;

		ak4613_x_ep: endpoint {
			remote-endpoint = <&be_x_ep>;
		};
	};
};

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

	ports@0 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;

		/*
		 * (A) CPU0
		 */
		port@0 {
			reg = <0>;
			rsnd_a_ep: endpoint {
				remote-endpoint = <&fe_a_ep>;
				bitclock-master;
				frame-master;
				playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
				capture  = <&ssi1 &src0 &dvc1>;
			};
		};
		/*
		 * (B) CPU1
		 */
		port@1 {
			reg = <1>;
			rsnd_b_ep: endpoint {
				remote-endpoint = <&fe_b_ep>;
				bitclock-master;
				frame-master;
				playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
			};
		};
	};
};
