PCM3168A SAI Audio In/Out not working at same time

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

PCM3168A SAI Audio In/Out not working at same time

ソリューションへジャンプ
1,522件の閲覧回数
jsmith8831
Contributor III

Hello,

I have a i.MX8QM with a PCM3168A audio codec, Linux 6.1.  I'm trying to use both audio playback and capture at the same time, but it seems that I can only use one at a time.  If I make the device tree so that the playback dai-link master is the cpu, I can play audio.  But I can't capture audio with this configuration.  If I then change the device tree so that the capture dai-link master is the codec, I can record audio but I can't playback audio.

I added "fsl,sai-asynchronous" to the sai0 node, but that didn't seem to allow both to work at the same time.  If I probe the ADC lines, I never see a BCLK or LRCLK signals when the cpu is the master, but I do see signals when the codec is the master.

What am I doing wrong?  Here's my device tree below:

Playback working, Capture not working:

sound_card: sound-card {
	compatible = "simple-audio-card";
	simple-audio-card,name = "PCM3168A";
	simple-audio-card,aux-devs = <&amp>;
	simple-audio-card,widgets =
			"Speaker", "Channel1out",
			"Speaker", "Channel2out",
			"Speaker", "Channel3out",
			"Speaker", "Channel4out",
			"Speaker", "Channel5out",
			"Speaker", "Channel6out",
			"Speaker", "Channel7out",
			"Speaker", "Channel8out",
			"Microphone", "Channel1in",
			"Microphone", "Channel2in",
			"Line", "Channel3in",
			"Line", "Channel4in",
			"Microphone", "Channel5in",
			"Microphone", "Channel6in";
	simple-audio-card,routing =
			"Channel1out", "AOUT1L",
			"Channel2out", "AOUT1R",
			"Channel3out", "AOUT2L",
			"Channel4out", "AOUT2R",
			"Channel5out", "AOUT3L",
			"Channel6out", "AOUT3R",
			"Channel7out", "AOUT4L",
			"Channel8out", "AOUT4R",
			"Channel1in", "AIN1L",
			"Channel2in", "AIN1R",
			"Channel3in", "AIN2L",
			"Channel4in", "AIN2R",
			"Channel5in", "AIN3L",
			"Channel6in", "AIN3R";

	simple-audio-card,dai-link@0 {
			format = "left_j";
			bitclock-master = <&snd_cpu>;
			frame-master = <&snd_cpu>;
			mclk-fs = <512>;

			snd_cpu: cpu {
					sound-dai = <&sai0>;
					clocks = <&mclkout0_lpcg 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};

			pcm3168_dac: codec {
					sound-dai = <&pcm3168a 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};
	};

	simple-audio-card,dai-link@1 {
			format = "left_j";
			bitclock-master = <&mic_cpu>;
			frame-master = <&mic_cpu>;
			mclk-fs = <512>;

			mic_cpu: cpu {
					sound-dai = <&sai0>;
					clocks = <&mclkout0_lpcg 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};

			pcm3168_adc: codec {
					sound-dai = <&pcm3168a 1>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};
	};
};

 

Capture Working, Playback not working:

simple-audio-card,dai-link@0 {
		format = "left_j";
		bitclock-master = <&snd_cpu>;
		frame-master = <&snd_cpu>;
		mclk-fs = <512>;

		snd_cpu: cpu {
				sound-dai = <&sai0>;
				clocks = <&mclkout0_lpcg 0>;
				dai-tdm-slot-num = <8>;
				dai-tdm-slot-width = <32>;
		};

		pcm3168_dac: codec {
				sound-dai = <&pcm3168a 0>;
				dai-tdm-slot-num = <8>;
				dai-tdm-slot-width = <32>;
		};
};

simple-audio-card,dai-link@1 {
		format = "left_j";
		bitclock-master = <&pcm3168_adc>;
		frame-master = <&pcm3168_adc>;
		mclk-fs = <512>;

		mic_cpu: cpu {
				sound-dai = <&sai0>;
				clocks = <&mclkout0_lpcg 0>;
				dai-tdm-slot-num = <8>;
				dai-tdm-slot-width = <32>;
		};

		pcm3168_adc: codec {
				sound-dai = <&pcm3168a 1>;
				dai-tdm-slot-num = <8>;
				dai-tdm-slot-width = <32>;
		};
};

 

SAI0 Node:

&sai0 {
	#sound-dai-cells = <0>;
	assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
			<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
			<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
			<&sai0_lpcg 0>;
	assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai0>;
	fsl,sai-asynchronous;
	status = "okay";
};

pinctrl_sai0: sai0grp {
	fsl,pins = <
		IMX8QM_SPI0_CS1_AUD_SAI0_TXC            0x0600004c	// BCKDA
		IMX8QM_SPI2_CS1_AUD_SAI0_TXFS			0x0600004c	// LRCKDA
		IMX8QM_SPI0_SDI_AUD_SAI0_RXD			0x0600004c	// DOUT1
		IMX8QM_SPI0_SDO_AUD_SAI0_TXD			0x0600006c	// DIN1
		IMX8QM_SPI0_SCK_AUD_SAI0_RXC			0x0600004c	// BCKAD
		IMX8QM_SPI0_CS0_AUD_SAI0_RXFS			0x0600004c	// LRCKAD
	>;
};

 

I2C Node:

// Audio Codec (8-channel output, 6-channel input)
pcm3168a: audio-codec@44 {
	compatible = "ti,pcm3168a";
	reg = <0x44>;
	reset-gpios = <&lsio_gpio4 24 GPIO_ACTIVE_LOW>;
	clocks = <&mclkout0_lpcg 0>;
	clock-names = "scki";
	clock-frequency = <24576000>;
	assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
		<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
		<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
		<&mclkout0_lpcg 0>;
	assigned-clock-rates = <786432000>, <49152000>, <24576000>, <49152000>;
	#sound-dai-cells = <1>;
	VDD1-supply = <&reg_3v3>;
	VDD2-supply = <&reg_3v3>;
	VCCAD1-supply = <&reg_5v0>;
	VCCAD2-supply = <&reg_5v0>;
	VCCDA1-supply = <&reg_5v0>;
	VCCDA2-supply = <&reg_5v0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_codec_clk &pinctrl_audio_reset>;
};

 

ラベル(1)
タグ(2)
0 件の賞賛
返信
1 解決策
1,508件の閲覧回数
jsmith8831
Contributor III

I figured it out.  I noticed the SAI6 and SAI7 nodes had this flag set: fsl,txm-rxs;, which I think means TX=master, RX=slave.  After setting this in the SAI0 node, and then making the following changes below, I can now capture and playback audio at the same time.

 

sound_card: sound-card {
	compatible = "simple-audio-card";
	simple-audio-card,name = "PCM3168A";
	simple-audio-card,aux-devs = <&amp>;
	simple-audio-card,widgets =
			"Speaker", "Channel1out",
			"Speaker", "Channel2out",
			"Speaker", "Channel3out",
			"Speaker", "Channel4out",
			"Speaker", "Channel5out",
			"Speaker", "Channel6out",
			"Speaker", "Channel7out",
			"Speaker", "Channel8out",
			"Microphone", "Channel1in",
			"Microphone", "Channel2in",
			"Line", "Channel3in",
			"Line", "Channel4in",
			"Microphone", "Channel5in",
			"Microphone", "Channel6in";
	simple-audio-card,routing =
			"Channel1out", "AOUT1L",
			"Channel2out", "AOUT1R",
			"Channel3out", "AOUT2L",
			"Channel4out", "AOUT2R",
			"Channel5out", "AOUT3L",
			"Channel6out", "AOUT3R",
			"Channel7out", "AOUT4L",
			"Channel8out", "AOUT4R",
			"Channel1in", "AIN1L",
			"Channel2in", "AIN1R",
			"Channel3in", "AIN2L",
			"Channel4in", "AIN2R",
			"Channel5in", "AIN3L",
			"Channel6in", "AIN3R";

	simple-audio-card,dai-link@0 {
			format = "left_j";
			bitclock-master = <&snd_cpu>;
			frame-master = <&snd_cpu>;
			mclk-fs = <512>;

			snd_cpu: cpu {
					sound-dai = <&sai0>;
					clocks = <&mclkout0_lpcg 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};

			pcm3168_dac: codec {
					sound-dai = <&pcm3168a 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};
	};

	simple-audio-card,dai-link@1 {
			format = "left_j";
			bitclock-master = <&pcm3168_adc>;
			frame-master = <&pcm3168_adc>;
			mclk-fs = <512>;

			mic_cpu: cpu {
					sound-dai = <&sai0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};

			pcm3168_adc: codec {
					sound-dai = <&pcm3168a 1>;
					clocks = <&mclkout0_lpcg 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};
	};
};

 

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
1,509件の閲覧回数
jsmith8831
Contributor III

I figured it out.  I noticed the SAI6 and SAI7 nodes had this flag set: fsl,txm-rxs;, which I think means TX=master, RX=slave.  After setting this in the SAI0 node, and then making the following changes below, I can now capture and playback audio at the same time.

 

sound_card: sound-card {
	compatible = "simple-audio-card";
	simple-audio-card,name = "PCM3168A";
	simple-audio-card,aux-devs = <&amp>;
	simple-audio-card,widgets =
			"Speaker", "Channel1out",
			"Speaker", "Channel2out",
			"Speaker", "Channel3out",
			"Speaker", "Channel4out",
			"Speaker", "Channel5out",
			"Speaker", "Channel6out",
			"Speaker", "Channel7out",
			"Speaker", "Channel8out",
			"Microphone", "Channel1in",
			"Microphone", "Channel2in",
			"Line", "Channel3in",
			"Line", "Channel4in",
			"Microphone", "Channel5in",
			"Microphone", "Channel6in";
	simple-audio-card,routing =
			"Channel1out", "AOUT1L",
			"Channel2out", "AOUT1R",
			"Channel3out", "AOUT2L",
			"Channel4out", "AOUT2R",
			"Channel5out", "AOUT3L",
			"Channel6out", "AOUT3R",
			"Channel7out", "AOUT4L",
			"Channel8out", "AOUT4R",
			"Channel1in", "AIN1L",
			"Channel2in", "AIN1R",
			"Channel3in", "AIN2L",
			"Channel4in", "AIN2R",
			"Channel5in", "AIN3L",
			"Channel6in", "AIN3R";

	simple-audio-card,dai-link@0 {
			format = "left_j";
			bitclock-master = <&snd_cpu>;
			frame-master = <&snd_cpu>;
			mclk-fs = <512>;

			snd_cpu: cpu {
					sound-dai = <&sai0>;
					clocks = <&mclkout0_lpcg 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};

			pcm3168_dac: codec {
					sound-dai = <&pcm3168a 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};
	};

	simple-audio-card,dai-link@1 {
			format = "left_j";
			bitclock-master = <&pcm3168_adc>;
			frame-master = <&pcm3168_adc>;
			mclk-fs = <512>;

			mic_cpu: cpu {
					sound-dai = <&sai0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};

			pcm3168_adc: codec {
					sound-dai = <&pcm3168a 1>;
					clocks = <&mclkout0_lpcg 0>;
					dai-tdm-slot-num = <8>;
					dai-tdm-slot-width = <32>;
			};
	};
};

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2042143%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EPCM3168A%20SAI%20Audio%20In%2FOut%20%E3%81%8C%E5%90%8C%E6%99%82%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2042143%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AFPCM3168A%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF%E3%80%81Linux%206.1%E3%82%92%E6%90%AD%E8%BC%89%E3%81%97%E3%81%9Fi.MX8QM%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E5%86%8D%E7%94%9F%E3%81%A8%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%83%BC%E3%81%AE%E4%B8%A1%E6%96%B9%E3%82%92%E5%90%8C%E6%99%82%E3%81%AB%E4%BD%BF%E3%81%8A%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E4%B8%80%E5%BA%A6%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%AE%E3%81%AF%E7%89%87%E6%96%B9%E3%81%A0%E3%81%91%E3%81%AE%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E5%86%8D%E7%94%9F%E3%83%80%E3%82%A4%E3%83%AA%E3%83%B3%E3%82%AF%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%92%20%3CSTRONG%3ECPU%3C%2FSTRONG%3E%E3%81%AB%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%84%E3%83%AA%E3%83%BC%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%82%92%E5%86%8D%E7%94%9F%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%93%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%A7%E3%81%AF%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%82%92%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%81%9D%E3%81%AE%E5%BE%8C%E3%80%81%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%20%E3%83%80%E3%82%A4%E3%83%AA%E3%83%B3%E3%82%AF%20%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%92%20%3CSTRONG%3E%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF%3C%2FSTRONG%3E%E3%81%AB%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%83%84%E3%83%AA%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%82%92%E9%8C%B2%E9%9F%B3%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%82%92%E5%86%8D%E7%94%9F%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3Esai0%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AB%E3%80%8C%3CSTRONG%3Efsl%2Csai-asynchronous%3C%2FSTRONG%3E%E3%80%8D%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E4%B8%A1%E6%96%B9%E3%81%8C%E5%90%8C%E6%99%82%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AF%E8%A6%8B%E3%81%88%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82ADC%20%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%E3%83%97%E3%83%AD%E3%83%BC%E3%83%96%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81CPU%20%E3%81%8C%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AE%E3%81%A8%E3%81%8D%E3%81%AB%E3%81%AF%20BCLK%20%E3%81%BE%E3%81%9F%E3%81%AF%20LRCLK%20%E3%81%AE%E4%BF%A1%E5%8F%B7%E3%81%AF%E6%A4%9C%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF%E3%81%8C%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AE%E3%81%A8%E3%81%8D%E3%81%AB%E3%81%AF%E4%BF%A1%E5%8F%B7%E3%81%8C%E5%87%BA%E5%8A%9B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E4%BD%95%E3%81%8C%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8B%3F%E3%81%93%E3%82%8C%E3%81%8C%E7%A7%81%E3%81%AE%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%84%E3%83%AA%E3%83%BC%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E5%86%8D%E7%94%9F%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Esound_card%3A%20sound-card%20%7B%0A%09compatible%20%3D%20%22simple-audio-card%22%3B%0A%09simple-audio-card%2Cname%20%3D%20%22PCM3168A%22%3B%0A%09simple-audio-card%2Caux-devs%20%3D%20%26lt%3B%26amp%3B%26gt%3B%3B%0A%09simple-audio-card%2Cwidgets%20%3D%0A%09%09%09%22Speaker%22%2C%20%22Channel1out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel2out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel3out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel4out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel5out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel6out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel7out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel8out%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel1in%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel2in%22%2C%0A%09%09%09%22Line%22%2C%20%22Channel3in%22%2C%0A%09%09%09%22Line%22%2C%20%22Channel4in%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel5in%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel6in%22%3B%0A%09simple-audio-card%2Crouting%20%3D%0A%09%09%09%22Channel1out%22%2C%20%22AOUT1L%22%2C%0A%09%09%09%22Channel2out%22%2C%20%22AOUT1R%22%2C%0A%09%09%09%22Channel3out%22%2C%20%22AOUT2L%22%2C%0A%09%09%09%22Channel4out%22%2C%20%22AOUT2R%22%2C%0A%09%09%09%22Channel5out%22%2C%20%22AOUT3L%22%2C%0A%09%09%09%22Channel6out%22%2C%20%22AOUT3R%22%2C%0A%09%09%09%22Channel7out%22%2C%20%22AOUT4L%22%2C%0A%09%09%09%22Channel8out%22%2C%20%22AOUT4R%22%2C%0A%09%09%09%22Channel1in%22%2C%20%22AIN1L%22%2C%0A%09%09%09%22Channel2in%22%2C%20%22AIN1R%22%2C%0A%09%09%09%22Channel3in%22%2C%20%22AIN2L%22%2C%0A%09%09%09%22Channel4in%22%2C%20%22AIN2R%22%2C%0A%09%09%09%22Channel5in%22%2C%20%22AIN3L%22%2C%0A%09%09%09%22Channel6in%22%2C%20%22AIN3R%22%3B%0A%0A%09simple-audio-card%2Cdai-link%400%20%7B%0A%09%09%09format%20%3D%20%22left_j%22%3B%0A%09%09%09bitclock-master%20%3D%20%26lt%3B%26amp%3Bsnd_cpu%26gt%3B%3B%0A%09%09%09frame-master%20%3D%20%26lt%3B%26amp%3Bsnd_cpu%26gt%3B%3B%0A%09%09%09mclk-fs%20%3D%20%26lt%3B512%26gt%3B%3B%0A%0A%09%09%09snd_cpu%3A%20cpu%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bsai0%26gt%3B%3B%0A%09%09%09%09%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09pcm3168_dac%3A%20codec%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bpcm3168a%200%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%09%7D%3B%0A%0A%09simple-audio-card%2Cdai-link%401%20%7B%0A%09%09%09format%20%3D%20%22left_j%22%3B%0A%09%09%09bitclock-master%20%3D%20%26lt%3B%26amp%3Bmic_cpu%26gt%3B%3B%0A%09%09%09frame-master%20%3D%20%26lt%3B%26amp%3Bmic_cpu%26gt%3B%3B%0A%09%09%09mclk-fs%20%3D%20%26lt%3B512%26gt%3B%3B%0A%0A%09%09%09mic_cpu%3A%20cpu%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bsai0%26gt%3B%3B%0A%09%09%09%09%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09pcm3168_adc%3A%20codec%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bpcm3168a%201%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%09%7D%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E5%86%8D%E7%94%9F%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Esimple-audio-card%2Cdai-link%400%20%7B%0A%09%09format%20%3D%20%22left_j%22%3B%0A%09%09bitclock-master%20%3D%20%26lt%3B%26amp%3Bsnd_cpu%26gt%3B%3B%0A%09%09frame-master%20%3D%20%26lt%3B%26amp%3Bsnd_cpu%26gt%3B%3B%0A%09%09mclk-fs%20%3D%20%26lt%3B512%26gt%3B%3B%0A%0A%09%09snd_cpu%3A%20cpu%20%7B%0A%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bsai0%26gt%3B%3B%0A%09%09%09%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%7D%3B%0A%0A%09%09pcm3168_dac%3A%20codec%20%7B%0A%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bpcm3168a%200%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%7D%3B%0A%7D%3B%0A%0Asimple-audio-card%2Cdai-link%401%20%7B%0A%09%09format%20%3D%20%22left_j%22%3B%0A%09%09bitclock-master%20%3D%20%26lt%3B%26amp%3Bpcm3168_adc%26gt%3B%3B%0A%09%09frame-master%20%3D%20%26lt%3B%26amp%3Bpcm3168_adc%26gt%3B%3B%0A%09%09mclk-fs%20%3D%20%26lt%3B512%26gt%3B%3B%0A%0A%09%09mic_cpu%3A%20cpu%20%7B%0A%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bsai0%26gt%3B%3B%0A%09%09%09%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%7D%3B%0A%0A%09%09pcm3168_adc%3A%20codec%20%7B%0A%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bpcm3168a%201%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%7D%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3ESAI0%20%E3%83%8E%E3%83%BC%E3%83%89%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%26amp%3Bsai0%20%7B%0A%09%23sound-dai-cells%20%3D%20%26lt%3B0%26gt%3B%3B%0A%09assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX_SC_R_AUDIO_PLL_0%20IMX_SC_PM_CLK_PLL%26gt%3B%2C%0A%09%09%09%26lt%3B%26amp%3Bclk%20IMX_SC_R_AUDIO_PLL_0%20IMX_SC_PM_CLK_SLV_BUS%26gt%3B%2C%0A%09%09%09%26lt%3B%26amp%3Bclk%20IMX_SC_R_AUDIO_PLL_0%20IMX_SC_PM_CLK_MST_BUS%26gt%3B%2C%0A%09%09%09%26lt%3B%26amp%3Bsai0_lpcg%200%26gt%3B%3B%0A%09assigned-clock-rates%20%3D%20%26lt%3B786432000%26gt%3B%2C%20%26lt%3B49152000%26gt%3B%2C%20%26lt%3B12288000%26gt%3B%2C%20%26lt%3B49152000%26gt%3B%3B%0A%09pinctrl-names%20%3D%20%22default%22%3B%0A%09pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_sai0%26gt%3B%3B%0A%09fsl%2Csai-asynchronous%3B%0A%09status%20%3D%20%22okay%22%3B%0A%7D%3B%0A%0Apinctrl_sai0%3A%20sai0grp%20%7B%0A%09fsl%2Cpins%20%3D%20%26lt%3B%0A%09%09IMX8QM_SPI0_CS1_AUD_SAI0_TXC%20%20%20%20%20%20%20%20%20%20%20%200x0600004c%09%2F%2F%20BCKDA%0A%09%09IMX8QM_SPI2_CS1_AUD_SAI0_TXFS%09%09%090x0600004c%09%2F%2F%20LRCKDA%0A%09%09IMX8QM_SPI0_SDI_AUD_SAI0_RXD%09%09%090x0600004c%09%2F%2F%20DOUT1%0A%09%09IMX8QM_SPI0_SDO_AUD_SAI0_TXD%09%09%090x0600006c%09%2F%2F%20DIN1%0A%09%09IMX8QM_SPI0_SCK_AUD_SAI0_RXC%09%09%090x0600004c%09%2F%2F%20BCKAD%0A%09%09IMX8QM_SPI0_CS0_AUD_SAI0_RXFS%09%09%090x0600004c%09%2F%2F%20LRCKAD%0A%09%26gt%3B%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3EI2C%E3%83%8E%E3%83%BC%E3%83%89%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3E%2F%2F%20Audio%20Codec%20(8-channel%20output%2C%206-channel%20input)%0Apcm3168a%3A%20audio-codec%4044%20%7B%0A%09compatible%20%3D%20%22ti%2Cpcm3168a%22%3B%0A%09reg%20%3D%20%26lt%3B0x44%26gt%3B%3B%0A%09reset-gpios%20%3D%20%26lt%3B%26amp%3Blsio_gpio4%2024%20GPIO_ACTIVE_LOW%26gt%3B%3B%0A%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09clock-names%20%3D%20%22scki%22%3B%0A%09clock-frequency%20%3D%20%26lt%3B24576000%26gt%3B%3B%0A%09assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX_SC_R_AUDIO_PLL_0%20IMX_SC_PM_CLK_PLL%26gt%3B%2C%0A%09%09%26lt%3B%26amp%3Bclk%20IMX_SC_R_AUDIO_PLL_0%20IMX_SC_PM_CLK_SLV_BUS%26gt%3B%2C%0A%09%09%26lt%3B%26amp%3Bclk%20IMX_SC_R_AUDIO_PLL_0%20IMX_SC_PM_CLK_MST_BUS%26gt%3B%2C%0A%09%09%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09assigned-clock-rates%20%3D%20%26lt%3B786432000%26gt%3B%2C%20%26lt%3B49152000%26gt%3B%2C%20%26lt%3B24576000%26gt%3B%2C%20%26lt%3B49152000%26gt%3B%3B%0A%09%23sound-dai-cells%20%3D%20%26lt%3B1%26gt%3B%3B%0A%09VDD1-supply%20%3D%20%26lt%3B%26amp%3Breg_3v3%26gt%3B%3B%0A%09VDD2-supply%20%3D%20%26lt%3B%26amp%3Breg_3v3%26gt%3B%3B%0A%09VCCAD1-supply%20%3D%20%26lt%3B%26amp%3Breg_5v0%26gt%3B%3B%0A%09VCCAD2-supply%20%3D%20%26lt%3B%26amp%3Breg_5v0%26gt%3B%3B%0A%09VCCDA1-supply%20%3D%20%26lt%3B%26amp%3Breg_5v0%26gt%3B%3B%0A%09VCCDA2-supply%20%3D%20%26lt%3B%26amp%3Breg_5v0%26gt%3B%3B%0A%09pinctrl-names%20%3D%20%22default%22%3B%0A%09pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_codec_clk%20%26amp%3Bpinctrl_audio_reset%26gt%3B%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2042143%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208%E3%83%95%E3%82%A1%E3%83%9F%E3%83%AA%20%7C%20i.MX%208QuadMax%E2%80%AF(8QM)%20%7C%208QuadPlus%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2042177%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3APCM3168A%20SAI%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E5%85%A5%E5%8A%9B%2F%E5%87%BA%E5%8A%9B%E3%81%8C%E5%90%8C%E6%99%82%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2042177%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%81%9D%E3%82%8C%E3%82%92%E7%90%86%E8%A7%A3%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82SAI6%20%E3%83%8E%E3%83%BC%E3%83%89%E3%81%A8%20SAI7%20%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AB%E3%81%AF%E3%80%81%20fsl%2Ctxm-rxs%3B%20%E3%81%A8%E3%81%84%E3%81%86%E3%83%95%E3%83%A9%E3%82%B0%E3%81%8C%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E6%B0%97%E4%BB%98%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81TX%3D%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%80%81RX%3D%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%E3%82%92%E6%84%8F%E5%91%B3%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%82%92%20SAI0%20%E3%83%8E%E3%83%BC%E3%83%89%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%97%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%E5%A4%89%E6%9B%B4%E3%82%92%E8%A1%8C%E3%81%86%E3%81%A8%E3%80%81%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%A8%E5%86%8D%E7%94%9F%E3%82%92%E5%90%8C%E6%99%82%E3%81%AB%E8%A1%8C%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Esound_card%3A%20sound-card%20%7B%0A%09compatible%20%3D%20%22simple-audio-card%22%3B%0A%09simple-audio-card%2Cname%20%3D%20%22PCM3168A%22%3B%0A%09simple-audio-card%2Caux-devs%20%3D%20%26lt%3B%26amp%3B%26gt%3B%3B%0A%09simple-audio-card%2Cwidgets%20%3D%0A%09%09%09%22Speaker%22%2C%20%22Channel1out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel2out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel3out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel4out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel5out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel6out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel7out%22%2C%0A%09%09%09%22Speaker%22%2C%20%22Channel8out%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel1in%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel2in%22%2C%0A%09%09%09%22Line%22%2C%20%22Channel3in%22%2C%0A%09%09%09%22Line%22%2C%20%22Channel4in%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel5in%22%2C%0A%09%09%09%22Microphone%22%2C%20%22Channel6in%22%3B%0A%09simple-audio-card%2Crouting%20%3D%0A%09%09%09%22Channel1out%22%2C%20%22AOUT1L%22%2C%0A%09%09%09%22Channel2out%22%2C%20%22AOUT1R%22%2C%0A%09%09%09%22Channel3out%22%2C%20%22AOUT2L%22%2C%0A%09%09%09%22Channel4out%22%2C%20%22AOUT2R%22%2C%0A%09%09%09%22Channel5out%22%2C%20%22AOUT3L%22%2C%0A%09%09%09%22Channel6out%22%2C%20%22AOUT3R%22%2C%0A%09%09%09%22Channel7out%22%2C%20%22AOUT4L%22%2C%0A%09%09%09%22Channel8out%22%2C%20%22AOUT4R%22%2C%0A%09%09%09%22Channel1in%22%2C%20%22AIN1L%22%2C%0A%09%09%09%22Channel2in%22%2C%20%22AIN1R%22%2C%0A%09%09%09%22Channel3in%22%2C%20%22AIN2L%22%2C%0A%09%09%09%22Channel4in%22%2C%20%22AIN2R%22%2C%0A%09%09%09%22Channel5in%22%2C%20%22AIN3L%22%2C%0A%09%09%09%22Channel6in%22%2C%20%22AIN3R%22%3B%0A%0A%09simple-audio-card%2Cdai-link%400%20%7B%0A%09%09%09format%20%3D%20%22left_j%22%3B%0A%09%09%09bitclock-master%20%3D%20%26lt%3B%26amp%3Bsnd_cpu%26gt%3B%3B%0A%09%09%09frame-master%20%3D%20%26lt%3B%26amp%3Bsnd_cpu%26gt%3B%3B%0A%09%09%09mclk-fs%20%3D%20%26lt%3B512%26gt%3B%3B%0A%0A%09%09%09snd_cpu%3A%20cpu%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bsai0%26gt%3B%3B%0A%09%09%09%09%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09pcm3168_dac%3A%20codec%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bpcm3168a%200%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%09%7D%3B%0A%0A%09simple-audio-card%2Cdai-link%401%20%7B%0A%09%09%09format%20%3D%20%22left_j%22%3B%0A%09%09%09bitclock-master%20%3D%20%26lt%3B%26amp%3Bpcm3168_adc%26gt%3B%3B%0A%09%09%09frame-master%20%3D%20%26lt%3B%26amp%3Bpcm3168_adc%26gt%3B%3B%0A%09%09%09mclk-fs%20%3D%20%26lt%3B512%26gt%3B%3B%0A%0A%09%09%09mic_cpu%3A%20cpu%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bsai0%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09pcm3168_adc%3A%20codec%20%7B%0A%09%09%09%09%09sound-dai%20%3D%20%26lt%3B%26amp%3Bpcm3168a%201%26gt%3B%3B%0A%09%09%09%09%09clocks%20%3D%20%26lt%3B%26amp%3Bmclkout0_lpcg%200%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-num%20%3D%20%26lt%3B8%26gt%3B%3B%0A%09%09%09%09%09dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%09%09%09%7D%3B%0A%09%7D%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E