ASoC: mediatek: Move 22M/24M clock control into I2S ops
authorKoro Chen <koro.chen@mediatek.com>
Tue, 10 Nov 2015 07:26:12 +0000 (15:26 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 17 Nov 2015 18:54:29 +0000 (18:54 +0000)
22M/24M clocks are only required for I2S, so move the control to
I2S DAI ops.

Signed-off-by: Koro Chen <koro.chen@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/mtk-afe-pcm.c

index f5baf3c..7f71343 100644 (file)
@@ -299,8 +299,6 @@ static int mtk_afe_dais_enable_clks(struct mtk_afe *afe,
                        dev_err(afe->dev, "Failed to enable m_ck\n");
                        return ret;
                }
-               regmap_update_bits(afe->regmap, AUDIO_TOP_CON0,
-                                  AUD_TCON0_PDN_22M | AUD_TCON0_PDN_24M, 0);
        }
 
        if (b_ck) {
@@ -340,12 +338,8 @@ static int mtk_afe_dais_set_clks(struct mtk_afe *afe,
 static void mtk_afe_dais_disable_clks(struct mtk_afe *afe,
                                      struct clk *m_ck, struct clk *b_ck)
 {
-       if (m_ck) {
-               regmap_update_bits(afe->regmap, AUDIO_TOP_CON0,
-                                  AUD_TCON0_PDN_22M | AUD_TCON0_PDN_24M,
-                                  AUD_TCON0_PDN_22M | AUD_TCON0_PDN_24M);
+       if (m_ck)
                clk_disable_unprepare(m_ck);
-       }
        if (b_ck)
                clk_disable_unprepare(b_ck);
 }
@@ -360,6 +354,8 @@ static int mtk_afe_i2s_startup(struct snd_pcm_substream *substream,
                return 0;
 
        mtk_afe_dais_enable_clks(afe, afe->clocks[MTK_CLK_I2S1_M], NULL);
+       regmap_update_bits(afe->regmap, AUDIO_TOP_CON0,
+                          AUD_TCON0_PDN_22M | AUD_TCON0_PDN_24M, 0);
        return 0;
 }
 
@@ -373,6 +369,9 @@ static void mtk_afe_i2s_shutdown(struct snd_pcm_substream *substream,
                return;
 
        mtk_afe_set_i2s_enable(afe, false);
+       regmap_update_bits(afe->regmap, AUDIO_TOP_CON0,
+                          AUD_TCON0_PDN_22M | AUD_TCON0_PDN_24M,
+                          AUD_TCON0_PDN_22M | AUD_TCON0_PDN_24M);
        mtk_afe_dais_disable_clks(afe, afe->clocks[MTK_CLK_I2S1_M], NULL);
 
        /* disable AFE */