diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/801-audio-0039-MLK-16224-6-ASoC-fsl_sai-fix-DSD-suspend-resume.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/801-audio-0039-MLK-16224-6-ASoC-fsl_sai-fix-DSD-suspend-resume.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/801-audio-0039-MLK-16224-6-ASoC-fsl_sai-fix-DSD-suspend-resume.patch b/target/linux/layerscape/patches-5.4/801-audio-0039-MLK-16224-6-ASoC-fsl_sai-fix-DSD-suspend-resume.patch new file mode 100644 index 0000000000..8ca538cd62 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/801-audio-0039-MLK-16224-6-ASoC-fsl_sai-fix-DSD-suspend-resume.patch @@ -0,0 +1,49 @@ +From a115bf34468398647e7a8f380058bd597e44e1b3 Mon Sep 17 00:00:00 2001 +From: Viorel Suman <viorel.suman@nxp.com> +Date: Mon, 29 Jan 2018 16:04:44 +0200 +Subject: [PATCH] MLK-16224-6: ASoC: fsl_sai: fix DSD suspend/resume + +With the existing implementation the SAI pinctrl state is restored to +default after resume - this breaks DSD playback after resume. +Restore DSD pinctrl state in snd_soc_dai_driver resume callback. + +Signed-off-by: Viorel Suman <viorel.suman@nxp.com> +Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com> +--- + sound/soc/fsl/fsl_sai.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +--- a/sound/soc/fsl/fsl_sai.c ++++ b/sound/soc/fsl/fsl_sai.c +@@ -893,6 +893,23 @@ static int fsl_sai_dai_probe(struct snd_ + return 0; + } + ++static int fsl_sai_dai_resume(struct snd_soc_dai *cpu_dai) ++{ ++ struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); ++ int ret; ++ ++ if (sai->is_dsd && !IS_ERR_OR_NULL(sai->pins_dsd)) { ++ ret = pinctrl_select_state(sai->pinctrl, sai->pins_dsd); ++ if (ret) { ++ dev_err(cpu_dai->dev, ++ "failed to set proper pins state: %d\n", ret); ++ return ret; ++ } ++ } ++ ++ return 0; ++} ++ + static struct snd_soc_dai_driver fsl_sai_dai = { + .probe = fsl_sai_dai_probe, + .playback = { +@@ -913,6 +930,7 @@ static struct snd_soc_dai_driver fsl_sai + .rates = SNDRV_PCM_RATE_KNOT, + .formats = FSL_SAI_FORMATS, + }, ++ .resume = fsl_sai_dai_resume, + .ops = &fsl_sai_pcm_dai_ops, + }; + |