diff options
Diffstat (limited to 'drivers/clk/tegra/clk-tegra20.c')
-rw-r--r-- | drivers/clk/tegra/clk-tegra20.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/clk/tegra/clk-tegra20.c b/drivers/clk/tegra/clk-tegra20.c index cbd5a2e5c569..0ee56dd04cec 100644 --- a/drivers/clk/tegra/clk-tegra20.c +++ b/drivers/clk/tegra/clk-tegra20.c | |||
@@ -576,6 +576,7 @@ static struct tegra_clk tegra20_clks[tegra_clk_max] __initdata = { | |||
576 | [tegra_clk_afi] = { .dt_id = TEGRA20_CLK_AFI, .present = true }, | 576 | [tegra_clk_afi] = { .dt_id = TEGRA20_CLK_AFI, .present = true }, |
577 | [tegra_clk_fuse] = { .dt_id = TEGRA20_CLK_FUSE, .present = true }, | 577 | [tegra_clk_fuse] = { .dt_id = TEGRA20_CLK_FUSE, .present = true }, |
578 | [tegra_clk_kfuse] = { .dt_id = TEGRA20_CLK_KFUSE, .present = true }, | 578 | [tegra_clk_kfuse] = { .dt_id = TEGRA20_CLK_KFUSE, .present = true }, |
579 | [tegra_clk_emc] = { .dt_id = TEGRA20_CLK_EMC, .present = true }, | ||
579 | }; | 580 | }; |
580 | 581 | ||
581 | static unsigned long tegra20_clk_measure_input_freq(void) | 582 | static unsigned long tegra20_clk_measure_input_freq(void) |
@@ -651,8 +652,7 @@ static void tegra20_pll_init(void) | |||
651 | 652 | ||
652 | /* PLLM */ | 653 | /* PLLM */ |
653 | clk = tegra_clk_register_pll("pll_m", "pll_ref", clk_base, NULL, | 654 | clk = tegra_clk_register_pll("pll_m", "pll_ref", clk_base, NULL, |
654 | CLK_IGNORE_UNUSED | CLK_SET_RATE_GATE, | 655 | CLK_SET_RATE_GATE, &pll_m_params, NULL); |
655 | &pll_m_params, NULL); | ||
656 | clks[TEGRA20_CLK_PLL_M] = clk; | 656 | clks[TEGRA20_CLK_PLL_M] = clk; |
657 | 657 | ||
658 | /* PLLM_OUT1 */ | 658 | /* PLLM_OUT1 */ |
@@ -660,7 +660,7 @@ static void tegra20_pll_init(void) | |||
660 | clk_base + PLLM_OUT, 0, TEGRA_DIVIDER_ROUND_UP, | 660 | clk_base + PLLM_OUT, 0, TEGRA_DIVIDER_ROUND_UP, |
661 | 8, 8, 1, NULL); | 661 | 8, 8, 1, NULL); |
662 | clk = tegra_clk_register_pll_out("pll_m_out1", "pll_m_out1_div", | 662 | clk = tegra_clk_register_pll_out("pll_m_out1", "pll_m_out1_div", |
663 | clk_base + PLLM_OUT, 1, 0, CLK_IGNORE_UNUSED | | 663 | clk_base + PLLM_OUT, 1, 0, |
664 | CLK_SET_RATE_PARENT, 0, NULL); | 664 | CLK_SET_RATE_PARENT, 0, NULL); |
665 | clks[TEGRA20_CLK_PLL_M_OUT1] = clk; | 665 | clks[TEGRA20_CLK_PLL_M_OUT1] = clk; |
666 | 666 | ||
@@ -723,7 +723,8 @@ static void tegra20_super_clk_init(void) | |||
723 | 723 | ||
724 | /* SCLK */ | 724 | /* SCLK */ |
725 | clk = tegra_clk_register_super_mux("sclk", sclk_parents, | 725 | clk = tegra_clk_register_super_mux("sclk", sclk_parents, |
726 | ARRAY_SIZE(sclk_parents), CLK_SET_RATE_PARENT, | 726 | ARRAY_SIZE(sclk_parents), |
727 | CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, | ||
727 | clk_base + SCLK_BURST_POLICY, 0, 4, 0, 0, NULL); | 728 | clk_base + SCLK_BURST_POLICY, 0, 4, 0, 0, NULL); |
728 | clks[TEGRA20_CLK_SCLK] = clk; | 729 | clks[TEGRA20_CLK_SCLK] = clk; |
729 | 730 | ||
@@ -814,9 +815,6 @@ static void __init tegra20_periph_clk_init(void) | |||
814 | CLK_SET_RATE_NO_REPARENT, | 815 | CLK_SET_RATE_NO_REPARENT, |
815 | clk_base + CLK_SOURCE_EMC, | 816 | clk_base + CLK_SOURCE_EMC, |
816 | 30, 2, 0, &emc_lock); | 817 | 30, 2, 0, &emc_lock); |
817 | clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0, | ||
818 | 57, periph_clk_enb_refcnt); | ||
819 | clks[TEGRA20_CLK_EMC] = clk; | ||
820 | 818 | ||
821 | clk = tegra_clk_register_mc("mc", "emc_mux", clk_base + CLK_SOURCE_EMC, | 819 | clk = tegra_clk_register_mc("mc", "emc_mux", clk_base + CLK_SOURCE_EMC, |
822 | &emc_lock); | 820 | &emc_lock); |
@@ -1019,13 +1017,12 @@ static struct tegra_clk_init_table init_table[] __initdata = { | |||
1019 | { TEGRA20_CLK_PLL_P_OUT2, TEGRA20_CLK_CLK_MAX, 48000000, 1 }, | 1017 | { TEGRA20_CLK_PLL_P_OUT2, TEGRA20_CLK_CLK_MAX, 48000000, 1 }, |
1020 | { TEGRA20_CLK_PLL_P_OUT3, TEGRA20_CLK_CLK_MAX, 72000000, 1 }, | 1018 | { TEGRA20_CLK_PLL_P_OUT3, TEGRA20_CLK_CLK_MAX, 72000000, 1 }, |
1021 | { TEGRA20_CLK_PLL_P_OUT4, TEGRA20_CLK_CLK_MAX, 24000000, 1 }, | 1019 | { TEGRA20_CLK_PLL_P_OUT4, TEGRA20_CLK_CLK_MAX, 24000000, 1 }, |
1022 | { TEGRA20_CLK_PLL_C, TEGRA20_CLK_CLK_MAX, 600000000, 1 }, | 1020 | { TEGRA20_CLK_PLL_C, TEGRA20_CLK_CLK_MAX, 600000000, 0 }, |
1023 | { TEGRA20_CLK_PLL_C_OUT1, TEGRA20_CLK_CLK_MAX, 216000000, 1 }, | 1021 | { TEGRA20_CLK_PLL_C_OUT1, TEGRA20_CLK_CLK_MAX, 240000000, 0 }, |
1024 | { TEGRA20_CLK_SCLK, TEGRA20_CLK_PLL_C_OUT1, 0, 1 }, | 1022 | { TEGRA20_CLK_SCLK, TEGRA20_CLK_PLL_C_OUT1, 240000000, 0 }, |
1025 | { TEGRA20_CLK_HCLK, TEGRA20_CLK_CLK_MAX, 0, 1 }, | 1023 | { TEGRA20_CLK_HCLK, TEGRA20_CLK_CLK_MAX, 240000000, 0 }, |
1026 | { TEGRA20_CLK_PCLK, TEGRA20_CLK_CLK_MAX, 60000000, 1 }, | 1024 | { TEGRA20_CLK_PCLK, TEGRA20_CLK_CLK_MAX, 60000000, 0 }, |
1027 | { TEGRA20_CLK_CSITE, TEGRA20_CLK_CLK_MAX, 0, 1 }, | 1025 | { TEGRA20_CLK_CSITE, TEGRA20_CLK_CLK_MAX, 0, 1 }, |
1028 | { TEGRA20_CLK_EMC, TEGRA20_CLK_CLK_MAX, 0, 1 }, | ||
1029 | { TEGRA20_CLK_CCLK, TEGRA20_CLK_CLK_MAX, 0, 1 }, | 1026 | { TEGRA20_CLK_CCLK, TEGRA20_CLK_CLK_MAX, 0, 1 }, |
1030 | { TEGRA20_CLK_UARTA, TEGRA20_CLK_PLL_P, 0, 0 }, | 1027 | { TEGRA20_CLK_UARTA, TEGRA20_CLK_PLL_P, 0, 0 }, |
1031 | { TEGRA20_CLK_UARTB, TEGRA20_CLK_PLL_P, 0, 0 }, | 1028 | { TEGRA20_CLK_UARTB, TEGRA20_CLK_PLL_P, 0, 0 }, |
@@ -1051,6 +1048,7 @@ static struct tegra_clk_init_table init_table[] __initdata = { | |||
1051 | { TEGRA20_CLK_DISP2, TEGRA20_CLK_PLL_P, 600000000, 0 }, | 1048 | { TEGRA20_CLK_DISP2, TEGRA20_CLK_PLL_P, 600000000, 0 }, |
1052 | { TEGRA20_CLK_GR2D, TEGRA20_CLK_PLL_C, 300000000, 0 }, | 1049 | { TEGRA20_CLK_GR2D, TEGRA20_CLK_PLL_C, 300000000, 0 }, |
1053 | { TEGRA20_CLK_GR3D, TEGRA20_CLK_PLL_C, 300000000, 0 }, | 1050 | { TEGRA20_CLK_GR3D, TEGRA20_CLK_PLL_C, 300000000, 0 }, |
1051 | { TEGRA20_CLK_VDE, TEGRA20_CLK_CLK_MAX, 300000000, 0 }, | ||
1054 | /* must be the last entry */ | 1052 | /* must be the last entry */ |
1055 | { TEGRA20_CLK_CLK_MAX, TEGRA20_CLK_CLK_MAX, 0, 0 }, | 1053 | { TEGRA20_CLK_CLK_MAX, TEGRA20_CLK_CLK_MAX, 0, 0 }, |
1056 | }; | 1054 | }; |