aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/clk-highbank.c
diff options
context:
space:
mode:
authorMark Langsdorf <mark.langsdorf@calxeda.com>2013-01-28 11:13:13 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-02-01 18:01:15 -0500
commitb5964708532f4713e9cfb1b8b1a6ac8544fc66af (patch)
treeac0b962debf44ef6a15a6ea0a652633f1afe372f /drivers/clk/clk-highbank.c
parentbd603455f366bd66a5e1870bc285c05c9cb6a72d (diff)
clk / highbank: Prevent glitches in non-bypass reset mode
The highbank clock will glitch with the current code if the clock rate is reset without relocking the PLL. Program the PLL correctly to prevent glitches. Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com> Signed-off-by: Rob Herring <rob.herring@calxeda.com> Acked-by: Mike Turquette <mturquette@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/clk/clk-highbank.c')
-rw-r--r--drivers/clk/clk-highbank.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/clk/clk-highbank.c b/drivers/clk/clk-highbank.c
index 52fecadf004a..3a0b723da2bc 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