summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShengjiu Wang <shengjiu.wang@nxp.com>2022-05-07 20:14:14 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-12-19 12:27:31 +0100
commit344739dc56f1b3e33e6a3170b89731d450455df6 (patch)
tree68ba501968bee32950bd569ab4b039b5f7d2f22c
parenta49c1a7307752ed5e371373f4db6a426857d4eed (diff)
downloadlinux-stable-344739dc56f1b3e33e6a3170b89731d450455df6.tar.gz
linux-stable-344739dc56f1b3e33e6a3170b89731d450455df6.tar.bz2
linux-stable-344739dc56f1b3e33e6a3170b89731d450455df6.zip
ASoC: fsl_micfil: explicitly clear CHnF flags
[ Upstream commit b776c4a4618ec1b5219d494c423dc142f23c4e8f ] There may be failure when start 1 channel recording after 8 channels recording. The reason is that the CHnF flags are not cleared successfully by software reset. This issue is triggerred by the change of clearing software reset bit. CHnF flags are write 1 clear bits. Clear them by force write. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://lore.kernel.org/r/1651925654-32060-2-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--sound/soc/fsl/fsl_micfil.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
index ead4bfa13561..6c794605e33c 100644
--- a/sound/soc/fsl/fsl_micfil.c
+++ b/sound/soc/fsl/fsl_micfil.c
@@ -201,6 +201,14 @@ static int fsl_micfil_reset(struct device *dev)
if (ret)
return ret;
+ /*
+ * Set SRES should clear CHnF flags, But even add delay here
+ * the CHnF may not be cleared sometimes, so clear CHnF explicitly.
+ */
+ ret = regmap_write_bits(micfil->regmap, REG_MICFIL_STAT, 0xFF, 0xFF);
+ if (ret)
+ return ret;
+
return 0;
}