From: Logesh <[email protected]>

If the da7213 codec is configured as Master with the DAPM power down
delay time set, 'snd_soc_component_write' function overwrites the
DAI_CLK_EN bit of DAI_CLK_MODE register which leads to audio play
only once until it re-initialize after codec power up.

Signed-off-by: Logesh <[email protected]>
---
 sound/soc/codecs/da7213.c | 4 +++-
 sound/soc/codecs/da7213.h | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c
index 92d006a5283e..306e01684bda 100644
--- a/sound/soc/codecs/da7213.c
+++ b/sound/soc/codecs/da7213.c
@@ -1305,7 +1305,9 @@ static int da7213_set_dai_fmt(struct snd_soc_dai 
*codec_dai, unsigned int fmt)
        /* By default only 64 BCLK per WCLK is supported */
        dai_clk_mode |= DA7213_DAI_BCLKS_PER_WCLK_64;
 
-       snd_soc_component_write(component, DA7213_DAI_CLK_MODE, dai_clk_mode);
+       snd_soc_component_update_bits(component, DA7213_DAI_CLK_MODE,
+                           DA7213_DAI_CLK_POL_MASK | DA7213_DAI_WCLK_POL_MASK,
+                           dai_clk_mode);
        snd_soc_component_update_bits(component, DA7213_DAI_CTRL, 
DA7213_DAI_FORMAT_MASK,
                            dai_ctrl);
        snd_soc_component_write(component, DA7213_DAI_OFFSET, dai_offset);
diff --git a/sound/soc/codecs/da7213.h b/sound/soc/codecs/da7213.h
index 5a78dba1dcb5..9d31efc3cfe5 100644
--- a/sound/soc/codecs/da7213.h
+++ b/sound/soc/codecs/da7213.h
@@ -181,7 +181,9 @@
 #define DA7213_DAI_BCLKS_PER_WCLK_256                          (0x3 << 0)
 #define DA7213_DAI_BCLKS_PER_WCLK_MASK                         (0x3 << 0)
 #define DA7213_DAI_CLK_POL_INV                                 (0x1 << 2)
+#define DA7213_DAI_CLK_POL_MASK                                        (0x1 << 
2)
 #define DA7213_DAI_WCLK_POL_INV                                        (0x1 << 
3)
+#define DA7213_DAI_WCLK_POL_MASK                               (0x1 << 3)
 #define DA7213_DAI_CLK_EN_MASK                                 (0x1 << 7)
 
 /* DA7213_DAI_CTRL = 0x29 */
-- 
2.21.0

Reply via email to