summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChancel Liu <chancel.liu@nxp.com>2023-09-13 18:26:56 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-10-06 13:18:18 +0200
commitbaf7cf0fdb837e85aa63da814031a1a9d5156ae1 (patch)
treebef9851bfb0f6b44333fdd9c1e11da0b73470c48
parent9da93c74490cb1c53a32185d4b74f0ebc7e74e4a (diff)
downloadlinux-baf7cf0fdb837e85aa63da814031a1a9d5156ae1.tar.gz
linux-baf7cf0fdb837e85aa63da814031a1a9d5156ae1.tar.bz2
linux-baf7cf0fdb837e85aa63da814031a1a9d5156ae1.zip
ASoC: imx-rpmsg: Set ignore_pmdown_time for dai_link
[ Upstream commit fac58baf8fcfcd7481e8f6d60206ce2a47c1476c ] i.MX rpmsg sound cards work on codec slave mode. MCLK will be disabled by CPU DAI driver in hw_free(). Some codec requires MCLK present at power up/down sequence. So need to set ignore_pmdown_time to power down codec immediately before MCLK is turned off. Take WM8962 as an example, if MCLK is disabled before DAPM power down playback stream, FIFO error will arise in WM8962 which will have bad impact on playback next. Signed-off-by: Chancel Liu <chancel.liu@nxp.com> Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com> Link: https://lore.kernel.org/r/20230913102656.2966757-1-chancel.liu@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--sound/soc/fsl/imx-rpmsg.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/soc/fsl/imx-rpmsg.c b/sound/soc/fsl/imx-rpmsg.c
index f96fe4ff8425..d208b05051fd 100644
--- a/sound/soc/fsl/imx-rpmsg.c
+++ b/sound/soc/fsl/imx-rpmsg.c
@@ -66,6 +66,14 @@ static int imx_rpmsg_probe(struct platform_device *pdev)
SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS;
+ /*
+ * i.MX rpmsg sound cards work on codec slave mode. MCLK will be
+ * disabled by CPU DAI driver in hw_free(). Some codec requires MCLK
+ * present at power up/down sequence. So need to set ignore_pmdown_time
+ * to power down codec immediately before MCLK is turned off.
+ */
+ data->dai.ignore_pmdown_time = 1;
+
/* Optional codec node */
ret = of_parse_phandle_with_fixed_args(np, "audio-codec", 0, 0, &args);
if (ret) {