Hi Nicolin,
On Thu, Sep 18, 2014 at 2:05 PM, Nicolin Chen nicoleotsuka@gmail.com wrote:
The problem here should be the AUDMUX configuration issue. The imx- sgtl5000.c driver only supports CODEC in master mode. So if you try to switch the CODEC slave mode, you shall also change not only the CBM_CFM to CBS_CFS but also swap the ext_port and int_port of AUDMUX (a little confusing approach here as the configuration of AUDMUX is routing the data and clocks from a source port to a destination port while each of side, external or internal, might be a source port -- When using CBM_CFM, the source port should be external port; while using CBS_CFS, the source port should be the internal port.)
Thanks for the hint on audmux swap! I can get ssi in master mode to work correctly with the change below:
--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi +++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi @@ -111,8 +111,8 @@ "IN3R", "MICBIAS", "DMIC", "MICBIAS", "DMICDAT", "DMIC"; - mux-int-port = <2>; - mux-ext-port = <3>; + mux-int-port = <3>; + mux-ext-port = <2>; };
backlight { diff --git a/sound/soc/fsl/imx-wm8962.c b/sound/soc/fsl/imx-wm8962.c index 3a3d17c..09ea6a5 100644 --- a/sound/soc/fsl/imx-wm8962.c +++ b/sound/soc/fsl/imx-wm8962.c @@ -247,7 +247,7 @@ static int imx_wm8962_probe(struct platform_device *pdev) data->dai.platform_of_node = ssi_np; data->dai.ops = &imx_hifi_ops; data->dai.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | - SND_SOC_DAIFMT_CBM_CFM; + SND_SOC_DAIFMT_CBS_CFS;
data->card.dev = &pdev->dev; ret = snd_soc_of_parse_card_name(&data->card, "model");