// 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:0,2 xxx.wav
 *
 *	(A) arecord -D plughw:0,0 xxx.wav
 *	(D) arecord -D plughw:0,3 xxx.wav
 */

&sound_card {
	/* dai-link@0/1 are defined in ulcb.dtsi */

	/*
	 * (C) CPU2 -> PCM3168A-p
	 */
	simple-audio-card,dai-link@2 {
		reg = <2>;
		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@3 {
		reg = <3>;
		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 {
		/* dai0-1 are defined in ulcb.dtsi */

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