diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/801-audio-0022-ASoC-fsl_sai-set-specific-fmt-for-I2S-XTOR.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/801-audio-0022-ASoC-fsl_sai-set-specific-fmt-for-I2S-XTOR.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/801-audio-0022-ASoC-fsl_sai-set-specific-fmt-for-I2S-XTOR.patch b/target/linux/layerscape/patches-5.4/801-audio-0022-ASoC-fsl_sai-set-specific-fmt-for-I2S-XTOR.patch new file mode 100644 index 0000000000..84bf81ae64 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/801-audio-0022-ASoC-fsl_sai-set-specific-fmt-for-I2S-XTOR.patch @@ -0,0 +1,62 @@ +From 307e37122cc14b5b305639c18ea575ebe623da2f Mon Sep 17 00:00:00 2001 +From: Viorel Suman <viorel.suman@nxp.com> +Date: Sun, 30 Apr 2017 17:05:52 +0300 +Subject: [PATCH] ASoC: fsl_sai: set specific fmt for I2S XTOR + +Set specific fmt, for i2s xtor receiver is +in slave mode and i2s xtor transmitter is in master mode. + +Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com> +Signed-off-by: Viorel Suman <viorel.suman@nxp.com> +--- + sound/soc/fsl/fsl_sai.c | 12 ++++++++++++ + sound/soc/fsl/fsl_sai.h | 2 +- + 2 files changed, 13 insertions(+), 1 deletion(-) + +--- a/sound/soc/fsl/fsl_sai.c ++++ b/sound/soc/fsl/fsl_sai.c +@@ -335,14 +335,23 @@ static int fsl_sai_set_dai_fmt_tr(struct + + static int fsl_sai_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) + { ++ struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); + int ret; + ++ if (sai->i2s_xtor) ++ fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBS_CFS; ++ + ret = fsl_sai_set_dai_fmt_tr(cpu_dai, fmt, FSL_FMT_TRANSMITTER); + if (ret) { + dev_err(cpu_dai->dev, "Cannot set tx format: %d\n", ret); + return ret; + } + ++ if (sai->i2s_xtor) ++ fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBM_CFM; ++ + ret = fsl_sai_set_dai_fmt_tr(cpu_dai, fmt, FSL_FMT_RECEIVER); + if (ret) + dev_err(cpu_dai->dev, "Cannot set rx format: %d\n", ret); +@@ -974,6 +983,9 @@ static int fsl_sai_probe(struct platform + return -EINVAL; + } + ++ /* I2S XTOR mode */ ++ sai->i2s_xtor = (of_find_property(np, "fsl,i2s-xtor", NULL) != NULL); ++ + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(&pdev->dev, "no irq for node %s\n", pdev->name); +--- a/sound/soc/fsl/fsl_sai.h ++++ b/sound/soc/fsl/fsl_sai.h +@@ -160,7 +160,7 @@ struct fsl_sai { + bool slave_mode[2]; + bool is_lsb_first; + bool is_dsp_mode; +- bool sai_on_imx; ++ bool i2s_xtor; + bool synchronous[2]; + bool is_stream_opened[2]; + unsigned int dataline[2]; |