ASoC: codecs: va-macro: clear the frame sync counter before enabling
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tue, 6 Sep 2022 17:01:11 +0000 (18:01 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 23 Sep 2022 13:25:09 +0000 (14:25 +0100)
Clear the frame sync counter before enabling it.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20220906170112.1984-12-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/lpass-va-macro.c

index 1ea10dc..a35f684 100644 (file)
@@ -23,6 +23,7 @@
 #define CDC_VA_MCLK_CONTROL_EN                 BIT(0)
 #define CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL     (0x0004)
 #define CDC_VA_FS_CONTROL_EN                   BIT(0)
+#define CDC_VA_FS_COUNTER_CLR                  BIT(1)
 #define CDC_VA_CLK_RST_CTRL_SWR_CONTROL                (0x0008)
 #define CDC_VA_TOP_CSR_TOP_CFG0                        (0x0080)
 #define CDC_VA_FS_BROADCAST_EN                 BIT(1)
@@ -423,9 +424,12 @@ static int va_clk_rsc_fs_gen_request(struct va_macro *va, bool enable)
                regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_MCLK_CONTROL,
                                   CDC_VA_MCLK_CONTROL_EN,
                                   CDC_VA_MCLK_CONTROL_EN);
-
+               /* clear the fs counter */
+               regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL,
+                                  CDC_VA_FS_CONTROL_EN | CDC_VA_FS_COUNTER_CLR,
+                                  CDC_VA_FS_CONTROL_EN | CDC_VA_FS_COUNTER_CLR);
                regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_FS_CNT_CONTROL,
-                                  CDC_VA_FS_CONTROL_EN,
+                                  CDC_VA_FS_CONTROL_EN | CDC_VA_FS_COUNTER_CLR,
                                   CDC_VA_FS_CONTROL_EN);
 
                regmap_update_bits(regmap, CDC_VA_TOP_CSR_TOP_CFG0,