aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2015-03-26 12:50:06 -0400
committerThierry Reding <treding@nvidia.com>2015-04-10 10:04:21 -0400
commita84724a1c3cccd03b4ca1c8aea135095d0a6204e (patch)
treed5257b9accfc44a9eb04c415a2919da6040b63a8 /drivers/clk
parent63cc5a4da1fafedee24d8f5af67c1dd9d08f95c7 (diff)
clk: tegra: Use generic tegra_osc_clk_init() on Tegra114
There is no reason why Tegra114 cannot use the same generic code to set up the oscillator, clk_m and pll_ref clocks. The only effective change that this causes is that the CLK_SET_PARENT_RATE flag is dropped, but since these clocks are all fixed it is not needed anyway. Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/tegra/clk-tegra114.c34
1 files changed, 3 insertions, 31 deletions
diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c
index 75d8af6213e7..8237d16b4075 100644
--- a/drivers/clk/tegra/clk-tegra114.c
+++ b/drivers/clk/tegra/clk-tegra114.c
@@ -940,36 +940,6 @@ static struct clk **clks;
940static unsigned long osc_freq; 940static unsigned long osc_freq;
941static unsigned long pll_ref_freq; 941static unsigned long pll_ref_freq;
942 942
943static int __init tegra114_osc_clk_init(void __iomem *clk_base)
944{
945 struct clk *clk;
946 u32 val, pll_ref_div;
947
948 val = readl_relaxed(clk_base + OSC_CTRL);
949
950 osc_freq = tegra114_input_freq[val >> OSC_CTRL_OSC_FREQ_SHIFT];
951 if (!osc_freq) {
952 WARN_ON(1);
953 return -EINVAL;
954 }
955
956 /* clk_m */
957 clk = clk_register_fixed_rate(NULL, "clk_m", NULL, CLK_IS_ROOT,
958 osc_freq);
959 clks[TEGRA114_CLK_CLK_M] = clk;
960
961 /* pll_ref */
962 val = (val >> OSC_CTRL_PLL_REF_DIV_SHIFT) & 3;
963 pll_ref_div = 1 << val;
964 clk = clk_register_fixed_factor(NULL, "pll_ref", "clk_m",
965 CLK_SET_RATE_PARENT, 1, pll_ref_div);
966 clks[TEGRA114_CLK_PLL_REF] = clk;
967
968 pll_ref_freq = osc_freq / pll_ref_div;
969
970 return 0;
971}
972
973static void __init tegra114_fixed_clk_init(void __iomem *clk_base) 943static void __init tegra114_fixed_clk_init(void __iomem *clk_base)
974{ 944{
975 struct clk *clk; 945 struct clk *clk;
@@ -1505,7 +1475,9 @@ static void __init tegra114_clock_init(struct device_node *np)
1505 if (!clks) 1475 if (!clks)
1506 return; 1476 return;
1507 1477
1508 if (tegra114_osc_clk_init(clk_base) < 0) 1478 if (tegra_osc_clk_init(clk_base, tegra114_clks, tegra114_input_freq,
1479 ARRAY_SIZE(tegra114_input_freq), 1, &osc_freq,
1480 &pll_ref_freq) < 0)
1509 return; 1481 return;
1510 1482
1511 tegra114_fixed_clk_init(clk_base); 1483 tegra114_fixed_clk_init(clk_base);