// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree for ULCB + Kingfisher + Simple Audio Card (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)
 *	(C) CPU3 (2ch)  ----> (8ch) (Y)	PCM3168A-p (TDM-0 : 0,1ch)
 *	(D) CPU2 (2ch)  --/			   (TDM-1 : 2,3ch)
 *	(E) CPU4 (2ch)  --/			   (TDM-2 : 4,5ch)
 *	(F) CPU5 (2ch)  --/			   (TDM-3 : 6,7ch)
 *	(G) CPU6 (6ch) <----  (6ch) (Z)	PCM3168A-c
 *
 *	(A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
 *	(B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
 *	(C) aplay   -D plughw:1,0 xxx.wav (TDM-0)
 *	(D) aplay   -D plughw:1,1 xxx.wav (TDM-1)
 *	(E) aplay   -D plughw:1,2 xxx.wav (TDM-2)
 *	(F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
 *
 *	(A) arecord -D plughw:0,0 xxx.wav
 *	(G) arecord -D plughw:1,4 xxx.wav
 */

/ {
	sound_card_kf: expand-sound {
		#address-cells = <1>;
		#size-cells = <0>;

		compatible = "simple-scu-audio-card";
		label = "snd-kf-split";

		simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback",
					    "pcm3168a Playback", "DAI3 Playback",
					    "pcm3168a Playback", "DAI4 Playback",
					    "pcm3168a Playback", "DAI5 Playback";

		simple-audio-card,dai-link@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
			convert-channels = <8>; /* to 8ch TDM */

			/*
			 * (C) CPU2
			 */
			cpu@0 {
				reg = <0>;
				bitclock-master;
				frame-master;
				sound-dai = <&rcar_sound 2>;
			};
			/*
			 * (D) CPU3
			 */
			cpu@1 {
				reg = <1>;
				sound-dai = <&rcar_sound 3>;
			};
			/*
			 * (E) CPU4
			 */
			cpu@2 {
				reg = <2>;
				sound-dai = <&rcar_sound 4>;
			};
			/*
			 * (F) CPU5
			 */
			cpu@3 {
				reg = <3>;
				sound-dai = <&rcar_sound 5>;
			};
			/*
			 * (Y) PCM3168A-p
			 */
			codec {
				prefix = "pcm3168a";
				mclk-fs = <512>;
				sound-dai = <&pcm3168a 0>;
			};
		};

		simple-audio-card,dai-link@1 {
			reg = <1>;
			/*
			 * (G) CPU6
			 */
			cpu {
				bitclock-master;
				frame-master;
				sound-dai = <&rcar_sound 6>;
			};
			/*
			 * (Z) PCM3168A-c
			 */
			codec {
				prefix = "pcm3168a";
				mclk-fs = <512>;
				sound-dai = <&pcm3168a 1>;
			};
		};
	};
};

&pcm3168a {
	/*
	 * (Y) PCM3168A-p
	 * (Z) PCM3168A-c
	 */
	#sound-dai-cells = <1>;
};

&rcar_sound {
	rcar_sound,dai@1 {
		reg = <1>;

		/* dai0-1 are defined in ulcb.dtsi */

		/*
		 * (C) CPU2
		 */
		dai2 {
			playback = <&ssiu30 &ssi3>;
		};
		/*
		 * (D) CPU3
		 */
		dai3 {
			playback = <&ssiu31 &ssi3>;
		};
		/*
		 * (E) CPU4
		 */
		dai4 {
			playback = <&ssiu32 &ssi3>;
		};
		/*
		 * (F) CPU5
		 */
		dai5 {
			playback = <&ssiu33 &ssi3>;
		};
		/*
		 * (G) CPU6
		 */
		dai6 {
			capture = <&ssi4>;
		};
	};
};
