aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/clk-highbank.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clk/clk-highbank.c')
-rw-r--r--drivers/clk/clk-highbank.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/clk/clk-highbank.c b/drivers/clk/clk-highbank.c
index 52fecadf004a..2e08cb001936 100644
--- a/drivers/clk/clk-highbank.c
+++ b/drivers/clk/clk-highbank.c
@@ -182,8 +182,10 @@ static int clk_pll_set_rate(struct clk_hw *hwclk, unsigned long rate,
182 reg |= HB_PLL_EXT_ENA; 182 reg |= HB_PLL_EXT_ENA;
183 reg &= ~HB_PLL_EXT_BYPASS; 183 reg &= ~HB_PLL_EXT_BYPASS;
184 } else { 184 } else {
185 writel(reg | HB_PLL_EXT_BYPASS, hbclk->reg);
185 reg &= ~HB_PLL_DIVQ_MASK; 186 reg &= ~HB_PLL_DIVQ_MASK;
186 reg |= divq << HB_PLL_DIVQ_SHIFT; 187 reg |= divq << HB_PLL_DIVQ_SHIFT;
188 writel(reg | HB_PLL_EXT_BYPASS, hbclk->reg);
187 } 189 }
188 writel(reg, hbclk->reg); 190 writel(reg, hbclk->reg);
189 191
@@ -314,33 +316,23 @@ static void __init hb_pll_init(struct device_node *node)
314{ 316{
315 hb_clk_init(node, &clk_pll_ops); 317 hb_clk_init(node, &clk_pll_ops);
316} 318}
319CLK_OF_DECLARE(hb_pll, "calxeda,hb-pll-clock", hb_pll_init);
317 320
318static void __init hb_a9periph_init(struct device_node *node) 321static void __init hb_a9periph_init(struct device_node *node)
319{ 322{
320 hb_clk_init(node, &a9periphclk_ops); 323 hb_clk_init(node, &a9periphclk_ops);
321} 324}
325CLK_OF_DECLARE(hb_a9periph, "calxeda,hb-a9periph-clock", hb_a9periph_init);
322 326
323static void __init hb_a9bus_init(struct device_node *node) 327static void __init hb_a9bus_init(struct device_node *node)
324{ 328{
325 struct clk *clk = hb_clk_init(node, &a9bclk_ops); 329 struct clk *clk = hb_clk_init(node, &a9bclk_ops);
326 clk_prepare_enable(clk); 330 clk_prepare_enable(clk);
327} 331}
332CLK_OF_DECLARE(hb_a9bus, "calxeda,hb-a9bus-clock", hb_a9bus_init);
328 333
329static void __init hb_emmc_init(struct device_node *node) 334static void __init hb_emmc_init(struct device_node *node)
330{ 335{
331 hb_clk_init(node, &periclk_ops); 336 hb_clk_init(node, &periclk_ops);
332} 337}
333 338CLK_OF_DECLARE(hb_emmc, "calxeda,hb-emmc-clock", hb_emmc_init);
334static const __initconst struct of_device_id clk_match[] = {
335 { .compatible = "fixed-clock", .data = of_fixed_clk_setup, },
336 { .compatible = "calxeda,hb-pll-clock", .data = hb_pll_init, },
337 { .compatible = "calxeda,hb-a9periph-clock", .data = hb_a9periph_init, },
338 { .compatible = "calxeda,hb-a9bus-clock", .data = hb_a9bus_init, },
339 { .compatible = "calxeda,hb-emmc-clock", .data = hb_emmc_init, },
340 {}
341};
342
343void __init highbank_clocks_init(void)
344{
345 of_clk_init(clk_match);
346}