diff options
-rw-r--r-- | drivers/clk/mediatek/clk-mt8173.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-mt8173.c index 4b9e04cdf7e8..8b6523d15fb8 100644 --- a/drivers/clk/mediatek/clk-mt8173.c +++ b/drivers/clk/mediatek/clk-mt8173.c | |||
@@ -700,6 +700,22 @@ static const struct mtk_composite peri_clks[] __initconst = { | |||
700 | MUX(CLK_PERI_UART3_SEL, "uart3_ck_sel", uart_ck_sel_parents, 0x40c, 3, 1), | 700 | MUX(CLK_PERI_UART3_SEL, "uart3_ck_sel", uart_ck_sel_parents, 0x40c, 3, 1), |
701 | }; | 701 | }; |
702 | 702 | ||
703 | static struct clk_onecell_data *mt8173_top_clk_data __initdata; | ||
704 | static struct clk_onecell_data *mt8173_pll_clk_data __initdata; | ||
705 | |||
706 | static void __init mtk_clk_enable_critical(void) | ||
707 | { | ||
708 | if (!mt8173_top_clk_data || !mt8173_pll_clk_data) | ||
709 | return; | ||
710 | |||
711 | clk_prepare_enable(mt8173_pll_clk_data->clks[CLK_APMIXED_ARMCA15PLL]); | ||
712 | clk_prepare_enable(mt8173_pll_clk_data->clks[CLK_APMIXED_ARMCA7PLL]); | ||
713 | clk_prepare_enable(mt8173_top_clk_data->clks[CLK_TOP_MEM_SEL]); | ||
714 | clk_prepare_enable(mt8173_top_clk_data->clks[CLK_TOP_DDRPHYCFG_SEL]); | ||
715 | clk_prepare_enable(mt8173_top_clk_data->clks[CLK_TOP_CCI400_SEL]); | ||
716 | clk_prepare_enable(mt8173_top_clk_data->clks[CLK_TOP_RTC_SEL]); | ||
717 | } | ||
718 | |||
703 | static void __init mtk_topckgen_init(struct device_node *node) | 719 | static void __init mtk_topckgen_init(struct device_node *node) |
704 | { | 720 | { |
705 | struct clk_onecell_data *clk_data; | 721 | struct clk_onecell_data *clk_data; |
@@ -712,19 +728,19 @@ static void __init mtk_topckgen_init(struct device_node *node) | |||
712 | return; | 728 | return; |
713 | } | 729 | } |
714 | 730 | ||
715 | clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK); | 731 | mt8173_top_clk_data = clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK); |
716 | 732 | ||
717 | mtk_clk_register_factors(root_clk_alias, ARRAY_SIZE(root_clk_alias), clk_data); | 733 | mtk_clk_register_factors(root_clk_alias, ARRAY_SIZE(root_clk_alias), clk_data); |
718 | mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), clk_data); | 734 | mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), clk_data); |
719 | mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes), base, | 735 | mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes), base, |
720 | &mt8173_clk_lock, clk_data); | 736 | &mt8173_clk_lock, clk_data); |
721 | 737 | ||
722 | clk_prepare_enable(clk_data->clks[CLK_TOP_CCI400_SEL]); | ||
723 | |||
724 | r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); | 738 | r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); |
725 | if (r) | 739 | if (r) |
726 | pr_err("%s(): could not register clock provider: %d\n", | 740 | pr_err("%s(): could not register clock provider: %d\n", |
727 | __func__, r); | 741 | __func__, r); |
742 | |||
743 | mtk_clk_enable_critical(); | ||
728 | } | 744 | } |
729 | CLK_OF_DECLARE(mtk_topckgen, "mediatek,mt8173-topckgen", mtk_topckgen_init); | 745 | CLK_OF_DECLARE(mtk_topckgen, "mediatek,mt8173-topckgen", mtk_topckgen_init); |
730 | 746 | ||
@@ -818,13 +834,13 @@ static void __init mtk_apmixedsys_init(struct device_node *node) | |||
818 | { | 834 | { |
819 | struct clk_onecell_data *clk_data; | 835 | struct clk_onecell_data *clk_data; |
820 | 836 | ||
821 | clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK); | 837 | mt8173_pll_clk_data = clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK); |
822 | if (!clk_data) | 838 | if (!clk_data) |
823 | return; | 839 | return; |
824 | 840 | ||
825 | mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data); | 841 | mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data); |
826 | 842 | ||
827 | clk_prepare_enable(clk_data->clks[CLK_APMIXED_ARMCA15PLL]); | 843 | mtk_clk_enable_critical(); |
828 | } | 844 | } |
829 | CLK_OF_DECLARE(mtk_apmixedsys, "mediatek,mt8173-apmixedsys", | 845 | CLK_OF_DECLARE(mtk_apmixedsys, "mediatek,mt8173-apmixedsys", |
830 | mtk_apmixedsys_init); | 846 | mtk_apmixedsys_init); |