0053-clk-mediatek-enable-critical-clocks.patch 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. From c8fd103d6c07af5db47f061b70759b7c69169656 Mon Sep 17 00:00:00 2001
  2. From: John Crispin <[email protected]>
  3. Date: Thu, 31 Mar 2016 06:46:51 +0200
  4. Subject: [PATCH 053/102] clk: mediatek: enable critical clocks
  5. Signed-off-by: John Crispin <[email protected]>
  6. ---
  7. drivers/clk/mediatek/clk-mt2701.c | 22 ++++++++++++++++++++--
  8. 1 file changed, 20 insertions(+), 2 deletions(-)
  9. diff --git a/drivers/clk/mediatek/clk-mt2701.c b/drivers/clk/mediatek/clk-mt2701.c
  10. index 812b347..1634288 100644
  11. --- a/drivers/clk/mediatek/clk-mt2701.c
  12. +++ b/drivers/clk/mediatek/clk-mt2701.c
  13. @@ -573,6 +573,20 @@ static const struct mtk_gate top_clks[] __initconst = {
  14. GATE_TOP_AUD(CLK_TOP_AUD_I2S6_MCLK, "aud_i2s6_mclk", "aud_k6_src_div", 28),
  15. };
  16. +static struct clk_onecell_data *mt7623_top_clk_data __initdata;
  17. +static struct clk_onecell_data *mt7623_pll_clk_data __initdata;
  18. +
  19. +static void __init mtk_clk_enable_critical(void)
  20. +{
  21. + if (!mt7623_top_clk_data || !mt7623_pll_clk_data)
  22. + return;
  23. +
  24. + clk_prepare_enable(mt7623_pll_clk_data->clks[CLK_APMIXED_ARMPLL]);
  25. + clk_prepare_enable(mt7623_top_clk_data->clks[CLK_TOP_MEM_SEL]);
  26. + clk_prepare_enable(mt7623_top_clk_data->clks[CLK_TOP_DDRPHYCFG_SEL]);
  27. + clk_prepare_enable(mt7623_top_clk_data->clks[CLK_TOP_RTC_SEL]);
  28. +}
  29. +
  30. static void __init mtk_topckgen_init(struct device_node *node)
  31. {
  32. struct clk_onecell_data *clk_data;
  33. @@ -585,7 +599,7 @@ static void __init mtk_topckgen_init(struct device_node *node)
  34. return;
  35. }
  36. - clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
  37. + mt7623_top_clk_data = clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
  38. mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
  39. clk_data);
  40. @@ -606,6 +620,8 @@ static void __init mtk_topckgen_init(struct device_node *node)
  41. if (r)
  42. pr_err("%s(): could not register clock provider: %d\n",
  43. __func__, r);
  44. +
  45. + mtk_clk_enable_critical();
  46. }
  47. CLK_OF_DECLARE(mtk_topckgen, "mediatek,mt2701-topckgen", mtk_topckgen_init);
  48. @@ -1202,7 +1218,7 @@ static void __init mtk_apmixedsys_init(struct device_node *node)
  49. struct clk_onecell_data *clk_data;
  50. int r;
  51. - clk_data = mtk_alloc_clk_data(ARRAY_SIZE(apmixed_plls));
  52. + mt7623_pll_clk_data = clk_data = mtk_alloc_clk_data(ARRAY_SIZE(apmixed_plls));
  53. if (!clk_data)
  54. return;
  55. @@ -1213,6 +1229,8 @@ static void __init mtk_apmixedsys_init(struct device_node *node)
  56. if (r)
  57. pr_err("%s(): could not register clock provider: %d\n",
  58. __func__, r);
  59. +
  60. + mtk_clk_enable_critical();
  61. }
  62. CLK_OF_DECLARE(mtk_apmixedsys, "mediatek,mt2701-apmixedsys",
  63. mtk_apmixedsys_init);
  64. --
  65. 1.7.10.4