diff options
Diffstat (limited to 'drivers/clk/clk-highbank.c')
-rw-r--r-- | drivers/clk/clk-highbank.c | 20 |
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 | } |
319 | CLK_OF_DECLARE(hb_pll, "calxeda,hb-pll-clock", hb_pll_init); | ||
317 | 320 | ||
318 | static void __init hb_a9periph_init(struct device_node *node) | 321 | static 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 | } |
325 | CLK_OF_DECLARE(hb_a9periph, "calxeda,hb-a9periph-clock", hb_a9periph_init); | ||
322 | 326 | ||
323 | static void __init hb_a9bus_init(struct device_node *node) | 327 | static 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 | } |
332 | CLK_OF_DECLARE(hb_a9bus, "calxeda,hb-a9bus-clock", hb_a9bus_init); | ||
328 | 333 | ||
329 | static void __init hb_emmc_init(struct device_node *node) | 334 | static 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 | 338 | CLK_OF_DECLARE(hb_emmc, "calxeda,hb-emmc-clock", hb_emmc_init); | |
334 | static 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 | |||
343 | void __init highbank_clocks_init(void) | ||
344 | { | ||
345 | of_clk_init(clk_match); | ||
346 | } | ||