]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ASoC: fsl_micfil: explicitly clear CHnF flags
authorShengjiu Wang <shengjiu.wang@nxp.com>
Sat, 7 May 2022 12:14:14 +0000 (20:14 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Dec 2022 11:27:31 +0000 (12:27 +0100)
[ 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>
sound/soc/fsl/fsl_micfil.c

index ead4bfa13561b16297ace742b1a965bcf16e2e47..6c794605e33c9c481ae5e018f0ac062238cb5a72 100644 (file)
@@ -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;
 }