AnsweredAssumed Answered

Question about audio playback with ssi as i2s slave on i.mx6sx

Question asked by Seven Lin on Oct 25, 2018
Latest reply on Oct 28, 2018 by Seven Lin

Hi,

 

My codec is tas5756m, and the codec is master.
However, by measuring BCLK and WCLK is no signal output while playback an audio file.

(MCLK & SDIN have signal output)

 

My code is modified as follows:

dts:
sound {
compatible = "fsl,imx6sx-fpa-tas5756", "fsl,imx-audio-tas5756";
model = "tas5756-audio";
cpu-dai = <&ssi2>;
audio-codec = <&codec>;
mux-int-port = <2>;
mux-ext-port = <6>;
codec-master;
};


&ssi2 {
assigned-clocks = <&clks IMX6SX_CLK_PLL4>,
<&clks IMX6SX_PLL4_BYPASS>,
<&clks IMX6SX_CLK_SSI2_SEL>;
assigned-clock-parents = <&clks IMX6SX_CLK_OSC>,
<&clks IMX6SX_CLK_PLL4>,
<&clks IMX6SX_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <737280000>, <0>, <0>;
status = "okay";
};

 

pinctrl_audmux: audmuxgrp {
fsl,pins = <
MX6SX_PAD_CSI_DATA00__AUDMUX_AUD6_TXC 0x130b0
MX6SX_PAD_CSI_DATA01__AUDMUX_AUD6_TXFS 0x130b0
MX6SX_PAD_CSI_HSYNC__AUDMUX_AUD6_TXD 0x120b0
MX6SX_PAD_CSI_VSYNC__AUDMUX_AUD6_RXD 0x130b0
MX6SX_PAD_CSI_PIXCLK__AUDMUX_MCLK 0x130b0

 

code:

 

int_port--;
ext_port--;
if (data->is_codec_master) {
tmp_port = int_port;
int_port = ext_port;
ext_port = tmp_port;
}

ret = imx_audmux_v2_configure_port(ext_port,
IMX_AUDMUX_V2_PTCR_SYN |
IMX_AUDMUX_V2_PTCR_TFSEL(int_port) |
IMX_AUDMUX_V2_PTCR_TCSEL(int_port) |
IMX_AUDMUX_V2_PTCR_TFSDIR |
IMX_AUDMUX_V2_PTCR_TCLKDIR,
IMX_AUDMUX_V2_PDCR_RXDSEL(int_port));
if (ret) {
dev_err(&pdev->dev, "audmux internal port setup failed\n");
goto fail;
}
ret = imx_audmux_v2_configure_port(int_port,
IMX_AUDMUX_V2_PTCR_SYN,
IMX_AUDMUX_V2_PDCR_RXDSEL(ext_port));
if (ret) {
dev_err(&pdev->dev, "audmux external port setup failed\n");
goto fail;
}

 

dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_C

BS_CFS;

 

My audio layout between codec and CSI as below:  

 


Please give me some advice, thanks.

Outcomes