// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree for ULCB + Kingfisher + Simple Audio Card
 *
 * Copyright (C) 2022 Renesas Electronics Corp.
 */

/*
 *	(A) CPU0 <----> ak4613
 *	(B) CPU1  ----> HDMI
 *	(C) CPU2  ----> PCM3168A-p
 *	(D) CPU3 <----  PCM3168A-c
 *
 *	(A) aplay   -D plughw:0,0 xxx.wav
 *	(B) aplay   -D plughw:0,1 xxx.wav
 *	(C) aplay   -D plughw:1,0 xxx.wav
 *
 *	(A) arecord -D plughw:0,0 xxx.wav
 *	(D) arecord -D plughw:1,1 xxx.wav
 */

/ {
	sound_card_kf: expand-sound {
		compatible = "simple-audio-card";
		label = "snd-kf";

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

		/*
		 * (C) CPU2 -> PCM3168A-p
		 */
		simple-audio-card,dai-link@0 {
			reg = <0>;
			cpu {
				bitclock-master;
				frame-master;
				dai-tdm-slot-num = <8>;
				sound-dai = <&rcar_sound 2>;
			};
			codec {
				mclk-fs = <512>;
				sound-dai = <&pcm3168a 0>;
			};
		};
		/*
		 * (D) CPU3 <- PCM3168A-c
		 */
		simple-audio-card,dai-link@1 {
			reg = <1>;
			cpu {
				bitclock-master;
				frame-master;
				dai-tdm-slot-num = <6>;
				sound-dai = <&rcar_sound 3>;
			};
			codec {
				mclk-fs = <512>;
				sound-dai = <&pcm3168a 1>;
			};
		};
	};
};

&pcm3168a {
	/*
	 * (C) CPU2 -> PCM3168A-p
	 * (D) CPU3 <- PCM3168A-c
	 */
	#sound-dai-cells = <1>;
};

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

		/*
		 * (C) CPU2 -> PCM3168A-p
		 */
		dai2 {
			playback = <&ssi3>;
		};
		/*
		 * (D) CPU3 <- PCM3168A-c
		 */
		dai3 {
			capture = <&ssi4>;
		};
	};
};
