diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-imx/clk-pllv3.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/clk-pllv3.c b/arch/arm/mach-imx/clk-pllv3.c index df1736232961..61364050fccd 100644 --- a/arch/arm/mach-imx/clk-pllv3.c +++ b/arch/arm/mach-imx/clk-pllv3.c | |||
@@ -71,16 +71,24 @@ static int clk_pllv3_prepare(struct clk_hw *hw) | |||
71 | { | 71 | { |
72 | struct clk_pllv3 *pll = to_clk_pllv3(hw); | 72 | struct clk_pllv3 *pll = to_clk_pllv3(hw); |
73 | u32 val; | 73 | u32 val; |
74 | int ret; | ||
74 | 75 | ||
75 | val = readl_relaxed(pll->base); | 76 | val = readl_relaxed(pll->base); |
76 | val &= ~BM_PLL_BYPASS; | ||
77 | if (pll->powerup_set) | 77 | if (pll->powerup_set) |
78 | val |= BM_PLL_POWER; | 78 | val |= BM_PLL_POWER; |
79 | else | 79 | else |
80 | val &= ~BM_PLL_POWER; | 80 | val &= ~BM_PLL_POWER; |
81 | writel_relaxed(val, pll->base); | 81 | writel_relaxed(val, pll->base); |
82 | 82 | ||
83 | return clk_pllv3_wait_lock(pll); | 83 | ret = clk_pllv3_wait_lock(pll); |
84 | if (ret) | ||
85 | return ret; | ||
86 | |||
87 | val = readl_relaxed(pll->base); | ||
88 | val &= ~BM_PLL_BYPASS; | ||
89 | writel_relaxed(val, pll->base); | ||
90 | |||
91 | return 0; | ||
84 | } | 92 | } |
85 | 93 | ||
86 | static void clk_pllv3_unprepare(struct clk_hw *hw) | 94 | static void clk_pllv3_unprepare(struct clk_hw *hw) |