123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- From e0e3768b73daae674c69db1f71718894274b7bfc Mon Sep 17 00:00:00 2001
- From: Ryder Lee <[email protected]>
- Date: Thu, 4 Jan 2018 15:44:07 +0800
- Subject: [PATCH 184/224] ASoC: mediatek: add some core clocks for MT2701 AFE
- Add three core clocks for MT2701 AFE.
- Signed-off-by: Ryder Lee <[email protected]>
- Signed-off-by: Mark Brown <[email protected]>
- ---
- sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c | 30 ++++++++++++++++++++++-
- sound/soc/mediatek/mt2701/mt2701-afe-common.h | 3 +++
- 2 files changed, 32 insertions(+), 1 deletion(-)
- --- a/sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c
- +++ b/sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c
- @@ -18,8 +18,11 @@
- #include "mt2701-afe-clock-ctrl.h"
-
- static const char *const base_clks[] = {
- + [MT2701_INFRA_SYS_AUDIO] = "infra_sys_audio_clk",
- [MT2701_TOP_AUD_MCLK_SRC0] = "top_audio_mux1_sel",
- [MT2701_TOP_AUD_MCLK_SRC1] = "top_audio_mux2_sel",
- + [MT2701_TOP_AUD_A1SYS] = "top_audio_a1sys_hp",
- + [MT2701_TOP_AUD_A2SYS] = "top_audio_a2sys_hp",
- [MT2701_AUDSYS_AFE] = "audio_afe_pd",
- [MT2701_AUDSYS_AFE_CONN] = "audio_afe_conn_pd",
- [MT2701_AUDSYS_A1SYS] = "audio_a1sys_pd",
- @@ -169,10 +172,26 @@ static int mt2701_afe_enable_audsys(stru
- struct mt2701_afe_private *afe_priv = afe->platform_priv;
- int ret;
-
- - ret = clk_prepare_enable(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
- + /* Enable infra clock gate */
- + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_INFRA_SYS_AUDIO]);
- if (ret)
- return ret;
-
- + /* Enable top a1sys clock gate */
- + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_TOP_AUD_A1SYS]);
- + if (ret)
- + goto err_a1sys;
- +
- + /* Enable top a2sys clock gate */
- + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_TOP_AUD_A2SYS]);
- + if (ret)
- + goto err_a2sys;
- +
- + /* Internal clock gates */
- + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
- + if (ret)
- + goto err_afe;
- +
- ret = clk_prepare_enable(afe_priv->base_ck[MT2701_AUDSYS_A1SYS]);
- if (ret)
- goto err_audio_a1sys;
- @@ -193,6 +212,12 @@ err_audio_a2sys:
- clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_A1SYS]);
- err_audio_a1sys:
- clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
- +err_afe:
- + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A2SYS]);
- +err_a2sys:
- + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A1SYS]);
- +err_a1sys:
- + clk_disable_unprepare(afe_priv->base_ck[MT2701_INFRA_SYS_AUDIO]);
-
- return ret;
- }
- @@ -205,6 +230,9 @@ static void mt2701_afe_disable_audsys(st
- clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_A2SYS]);
- clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_A1SYS]);
- clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
- + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A1SYS]);
- + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A2SYS]);
- + clk_disable_unprepare(afe_priv->base_ck[MT2701_INFRA_SYS_AUDIO]);
- }
-
- int mt2701_afe_enable_clock(struct mtk_base_afe *afe)
- --- a/sound/soc/mediatek/mt2701/mt2701-afe-common.h
- +++ b/sound/soc/mediatek/mt2701/mt2701-afe-common.h
- @@ -61,8 +61,11 @@ enum {
- };
-
- enum audio_base_clock {
- + MT2701_INFRA_SYS_AUDIO,
- MT2701_TOP_AUD_MCLK_SRC0,
- MT2701_TOP_AUD_MCLK_SRC1,
- + MT2701_TOP_AUD_A1SYS,
- + MT2701_TOP_AUD_A2SYS,
- MT2701_AUDSYS_AFE,
- MT2701_AUDSYS_AFE_CONN,
- MT2701_AUDSYS_A1SYS,
|