How to config SOC use TDM_D2 as I2S output to external Codec?

	aml-audio-card,dai-link@0 {
		format = "i2s";
		mclk-fs = <256>;
		continuous-clock;
		//bitclock-inversion;
		//frame-inversion;
		/* master mode */
		bitclock-master = <&tdma>;
		frame-master = <&tdma>;
		/* slave mode */
		/*
		 * bitclock-master = <&tdmacodec>;
		 * frame-master = <&tdmacodec>;
		 */
		/* suffix-name, sync with android audio hal used for */
		suffix-name = "alsaPORT-i2s";
		tdmacpu: cpu {
			sound-dai = <&tdma>;
			dai-tdm-slot-tx-mask =
						<1 1>;
			dai-tdm-slot-rx-mask =
						<1 1>;
			dai-tdm-slot-num = <2>;
			dai-tdm-slot-width = <32>;
			system-clock-frequency = <12288000>;
		};
		tdmacodec: codec {
			prefix-names = "AMP", "AMP1";
			sound-dai = <&ad82088_60 &ad82088_62 &acodec>;
		};
	};

&audiobus {
tdma:tdm@0 {
	compatible = "amlogic, t7-snd-tdma";
	#sound-dai-cells = <0>;

	dai-tdm-lane-slot-mask-in = <1 0 0 0>;
	dai-tdm-lane-slot-mask-out = <1 1 1 1>;
	dai-tdm-clk-sel = <0>;

	clocks = <&clkaudio CLKID_AUDIO_MCLK_A
			&clkaudio CLKID_AUDIO_MCLK_PAD1
			&clkc CLKID_MPLL0
			&clkc CLKID_MPLL1
			&clkaudio CLKID_AUDIO_SPDIFOUT_A>;
	clock-names = "mclk", "mclk_pad", "clk_srcpll",
		"samesource_srcpll", "samesource_clk";

	pinctrl-names = "tdm_pins";
	pinctrl-0 = <&mclk_1_pins
		&tdm_a_pins
		&tdm_d4_pins
		&tdm_d2_pins
		&tdm_clk_pins>;

	/*
	 * 0: tdmout_a;
	 * 1: tdmout_b;
	 * 2: tdmout_c;
	 * 3: spdifout;
	 * 4: spdifout_b;
	 */
	samesource_sel = <3>;

	/* In for ACODEC_ADC */
	acodec_adc = <1>;
	/*enable default mclk(12.288M), before extern codec start*/
	start_clk_enable = <1>;

	/*tdm clk tuning enable*/
	clk_tuning_enable = <1>;
	status = "okay";

	/* !!!For --TV platform-- ONLY */
	Channel_Mask {
		/*i2s has 4 pins, 8channel, mux output*/
		Spdif_samesource_Channel_Mask = "i2s_2/3";
	};
};
2 Likes

Did you get this working? Iā€™m trying to hook a VIM3L up to an external 8 channel DAC, the ESS9038PRO from DIYINHK, and have been unsuccessful so far.

what pins do you use for data output?