0184-ASoC-mediatek-add-some-core-clocks-for-MT2701-AFE.patch 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. From e0e3768b73daae674c69db1f71718894274b7bfc Mon Sep 17 00:00:00 2001
  2. From: Ryder Lee <[email protected]>
  3. Date: Thu, 4 Jan 2018 15:44:07 +0800
  4. Subject: [PATCH 184/224] ASoC: mediatek: add some core clocks for MT2701 AFE
  5. Add three core clocks for MT2701 AFE.
  6. Signed-off-by: Ryder Lee <[email protected]>
  7. Signed-off-by: Mark Brown <[email protected]>
  8. ---
  9. sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c | 30 ++++++++++++++++++++++-
  10. sound/soc/mediatek/mt2701/mt2701-afe-common.h | 3 +++
  11. 2 files changed, 32 insertions(+), 1 deletion(-)
  12. diff --git a/sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c b/sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c
  13. index 56a057c78c9a..949fc3a1d025 100644
  14. --- a/sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c
  15. +++ b/sound/soc/mediatek/mt2701/mt2701-afe-clock-ctrl.c
  16. @@ -18,8 +18,11 @@
  17. #include "mt2701-afe-clock-ctrl.h"
  18. static const char *const base_clks[] = {
  19. + [MT2701_INFRA_SYS_AUDIO] = "infra_sys_audio_clk",
  20. [MT2701_TOP_AUD_MCLK_SRC0] = "top_audio_mux1_sel",
  21. [MT2701_TOP_AUD_MCLK_SRC1] = "top_audio_mux2_sel",
  22. + [MT2701_TOP_AUD_A1SYS] = "top_audio_a1sys_hp",
  23. + [MT2701_TOP_AUD_A2SYS] = "top_audio_a2sys_hp",
  24. [MT2701_AUDSYS_AFE] = "audio_afe_pd",
  25. [MT2701_AUDSYS_AFE_CONN] = "audio_afe_conn_pd",
  26. [MT2701_AUDSYS_A1SYS] = "audio_a1sys_pd",
  27. @@ -169,10 +172,26 @@ static int mt2701_afe_enable_audsys(struct mtk_base_afe *afe)
  28. struct mt2701_afe_private *afe_priv = afe->platform_priv;
  29. int ret;
  30. - ret = clk_prepare_enable(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
  31. + /* Enable infra clock gate */
  32. + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_INFRA_SYS_AUDIO]);
  33. if (ret)
  34. return ret;
  35. + /* Enable top a1sys clock gate */
  36. + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_TOP_AUD_A1SYS]);
  37. + if (ret)
  38. + goto err_a1sys;
  39. +
  40. + /* Enable top a2sys clock gate */
  41. + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_TOP_AUD_A2SYS]);
  42. + if (ret)
  43. + goto err_a2sys;
  44. +
  45. + /* Internal clock gates */
  46. + ret = clk_prepare_enable(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
  47. + if (ret)
  48. + goto err_afe;
  49. +
  50. ret = clk_prepare_enable(afe_priv->base_ck[MT2701_AUDSYS_A1SYS]);
  51. if (ret)
  52. goto err_audio_a1sys;
  53. @@ -193,6 +212,12 @@ static int mt2701_afe_enable_audsys(struct mtk_base_afe *afe)
  54. clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_A1SYS]);
  55. err_audio_a1sys:
  56. clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
  57. +err_afe:
  58. + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A2SYS]);
  59. +err_a2sys:
  60. + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A1SYS]);
  61. +err_a1sys:
  62. + clk_disable_unprepare(afe_priv->base_ck[MT2701_INFRA_SYS_AUDIO]);
  63. return ret;
  64. }
  65. @@ -205,6 +230,9 @@ static void mt2701_afe_disable_audsys(struct mtk_base_afe *afe)
  66. clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_A2SYS]);
  67. clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_A1SYS]);
  68. clk_disable_unprepare(afe_priv->base_ck[MT2701_AUDSYS_AFE]);
  69. + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A1SYS]);
  70. + clk_disable_unprepare(afe_priv->base_ck[MT2701_TOP_AUD_A2SYS]);
  71. + clk_disable_unprepare(afe_priv->base_ck[MT2701_INFRA_SYS_AUDIO]);
  72. }
  73. int mt2701_afe_enable_clock(struct mtk_base_afe *afe)
  74. diff --git a/sound/soc/mediatek/mt2701/mt2701-afe-common.h b/sound/soc/mediatek/mt2701/mt2701-afe-common.h
  75. index 9a2b301a4c21..ae8ddeacfbfe 100644
  76. --- a/sound/soc/mediatek/mt2701/mt2701-afe-common.h
  77. +++ b/sound/soc/mediatek/mt2701/mt2701-afe-common.h
  78. @@ -61,8 +61,11 @@ enum {
  79. };
  80. enum audio_base_clock {
  81. + MT2701_INFRA_SYS_AUDIO,
  82. MT2701_TOP_AUD_MCLK_SRC0,
  83. MT2701_TOP_AUD_MCLK_SRC1,
  84. + MT2701_TOP_AUD_A1SYS,
  85. + MT2701_TOP_AUD_A2SYS,
  86. MT2701_AUDSYS_AFE,
  87. MT2701_AUDSYS_AFE_CONN,
  88. MT2701_AUDSYS_A1SYS,
  89. --
  90. 2.11.0