A311D音频要如何配置支持两个设备音频输入?

你好:
我们的系统中用到了TDMB的I2S的输入以及蓝牙耳机的音频TDMA,我发现测试中一个问题只能使用一个音频设备。
aml_audiobus_write(actrl, EE_AUDIO_CLK_GATE_EN0, 0xffffffff);|

//aml_audiobus_write(actrl, EE_AUDIO_CLK_GATE_EN1, 0xffffffff);|
上面两个都使能则可以使用TDMB的I2S的输入,如果注释掉EE_AUDIO_CLK_GATE_EN1就可以使用蓝牙耳机的音频,这个问题通过配置dts可以解决吗?
下面是我目前用的dts配置:
compatible = “amlogic, g12a-sound-card”;
aml-audio-card,name = “AML-AUGESOUND”;

	//aml-audio-card,aux-devs = <&amlogic_codec>;
	/*for audio effect ,eqdrc */
	aml-audio-card,effect = <&audio_effect>;

	aml-audio-card,dai-link@0 {
		format = "dsp_a";
		mclk-fs = <512>;
		//continuous-clock;
		//bitclock-inversion;
		//frame-inversion;
		//bitclock-master = <&tdmacodec>;
		//frame-master = <&tdmacodec>;
		/* suffix-name, sync with android audio hal
		 * what's the dai link used for
		 */
		suffix-name = "alsaPORT-pcm";
		tdmacpu: cpu {
			sound-dai = <&aml_tdma>;
			dai-tdm-slot-tx-mask =
						<1 0 0 0 0 0 0 0>;
			dai-tdm-slot-rx-mask =
						<1 0 0 0 0 0 0 0>;
			dai-tdm-slot-num = <8>;
			dai-tdm-slot-width = <32>;
			system-clock-frequency = <24576000>;
		};
		tdmacodec: codec {
			sound-dai = <&dummy_codec &dummy_codec>;
		};
	};

	aml-audio-card,dai-link@1 {
		format = "i2s";
		mclk-fs = <256>;
		continuous-clock;
		//bitclock-inversion;
		//frame-inversion;
		bitclock-master = <&aml_tdmb>;
		frame-master = <&aml_tdmb>;
		//bitclock-master = <&tdmbcodec>;
		//frame-master = <&tdmbcodec>;
		/* suffix-name, sync with android audio hal
		 * what's the dai link used for
		 */
		suffix-name = "alsaPORT-i2s";
		cpu {
			sound-dai = <&aml_tdmb>;
			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>;
		};
		tdmbcodec: codec {
			sound-dai = <&dummy_codec &dummy_codec
			&amlogic_codec>;
		};
	};

aml_tdma: tdma {
	compatible = "amlogic, g12a-snd-tdma";
	#sound-dai-cells = <0>;
	dai-tdm-lane-slot-mask-in = <0 1>;
	dai-tdm-lane-oe-slot-mask-out = <1 0>;
	dai-tdm-clk-sel = <0>;
	clocks = <&clkaudio CLKID_AUDIO_MCLK_A
			&clkc CLKID_MPLL0>;
	clock-names = "mclk", "clk_srcpll";
	pinctrl-names = "tdm_pins";
	pinctrl-0 = <&tdmout_a &tdmin_a>;
};

aml_tdmb: tdmb {
	compatible = "amlogic, g12a-snd-tdmb";
	#sound-dai-cells = <0>;
	dai-tdm-lane-slot-mask-in = <0 1 0 0>;
	dai-tdm-lane-slot-mask-out = <1 0 0 0>;
	dai-tdm-clk-sel = <1>;
	clocks = <&clkaudio CLKID_AUDIO_MCLK_B
			&clkc CLKID_MPLL1
			&clkc CLKID_MPLL0
			&clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
	clock-names = "mclk", "clk_srcpll",
		"samesource_srcpll", "samesource_clk";
	pinctrl-names = "tdm_pins";
	pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
	mclk_pad = <0>;  /* 0: mclk_0; 1: mclk_1 */
	/*
	 * 0: tdmout_a;
	 * 1: tdmout_b;
	 * 2: tdmout_c;
	 * 3: spdifout;
	 * 4: spdifout_b;
	 */
	samesource_sel = <3>;
};

你用的什么系统?Android还是Ubuntu?

你好!我现在用的是android系统,这个和android系统或者ubuntu系统有关系吗?

@ninver2020 你是要支持i2s 和蓝牙耳机都可以录音?我这边稍后确认下你的问题

好的谢谢,是的我们需要支持i2s 和蓝牙耳机都可以录音

我这边用有线耳机和蓝牙耳机录音都是可以的,有线耳机走tdmb ,蓝牙走tdma ,你是怎么测试的呢?

我这里测试外部i2s的输入用的是tdmb,蓝牙耳机录音是tdma

外部i2s的输入,你具体是怎么输入的,我重现下

我们接的是一个外挂的音频芯片你那可能不能重现,我在register_audio_controller函数里最后调用aml_audiobus_read(actrl,EE_AUDIO_CLK_GATE_EN0);测试发现i2s 和蓝牙耳机都可以录音都没问题了不知道什么原因

原来register_audio_controller最后是aml_audiobus_write,你改成aml_audiobus_read 就可以了?

我是在aml_audiobus_write后,加了aml_audiobus_read(actrl,EE_AUDIO_CLK_GATE_EN0)的操作