diff options
-rw-r--r-- | arch/arm/mach-omap2/clkt_clksel.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clkt_dpll.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clkt_iclk.c | 20 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock.c | 25 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock36xx.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/dpll3xxx.c | 37 | ||||
-rw-r--r-- | arch/arm/mach-omap2/dpll44xx.c | 12 |
7 files changed, 63 insertions, 54 deletions
diff --git a/arch/arm/mach-omap2/clkt_clksel.c b/arch/arm/mach-omap2/clkt_clksel.c index 0ec9f6fdf046..7ee26108ac0d 100644 --- a/arch/arm/mach-omap2/clkt_clksel.c +++ b/arch/arm/mach-omap2/clkt_clksel.c | |||
@@ -97,12 +97,12 @@ static void _write_clksel_reg(struct clk_hw_omap *clk, u32 field_val) | |||
97 | { | 97 | { |
98 | u32 v; | 98 | u32 v; |
99 | 99 | ||
100 | v = __raw_readl(clk->clksel_reg); | 100 | v = omap2_clk_readl(clk, clk->clksel_reg); |
101 | v &= ~clk->clksel_mask; | 101 | v &= ~clk->clksel_mask; |
102 | v |= field_val << __ffs(clk->clksel_mask); | 102 | v |= field_val << __ffs(clk->clksel_mask); |
103 | __raw_writel(v, clk->clksel_reg); | 103 | omap2_clk_writel(v, clk, clk->clksel_reg); |
104 | 104 | ||
105 | v = __raw_readl(clk->clksel_reg); /* OCP barrier */ | 105 | v = omap2_clk_readl(clk, clk->clksel_reg); /* OCP barrier */ |
106 | } | 106 | } |
107 | 107 | ||
108 | /** | 108 | /** |
@@ -204,7 +204,7 @@ static u32 _read_divisor(struct clk_hw_omap *clk) | |||
204 | if (!clk->clksel || !clk->clksel_mask) | 204 | if (!clk->clksel || !clk->clksel_mask) |
205 | return 0; | 205 | return 0; |
206 | 206 | ||
207 | v = __raw_readl(clk->clksel_reg); | 207 | v = omap2_clk_readl(clk, clk->clksel_reg); |
208 | v &= clk->clksel_mask; | 208 | v &= clk->clksel_mask; |
209 | v >>= __ffs(clk->clksel_mask); | 209 | v >>= __ffs(clk->clksel_mask); |
210 | 210 | ||
@@ -320,7 +320,7 @@ u8 omap2_clksel_find_parent_index(struct clk_hw *hw) | |||
320 | WARN((!clk->clksel || !clk->clksel_mask), | 320 | WARN((!clk->clksel || !clk->clksel_mask), |
321 | "clock: %s: attempt to call on a non-clksel clock", clk_name); | 321 | "clock: %s: attempt to call on a non-clksel clock", clk_name); |
322 | 322 | ||
323 | r = __raw_readl(clk->clksel_reg) & clk->clksel_mask; | 323 | r = omap2_clk_readl(clk, clk->clksel_reg) & clk->clksel_mask; |
324 | r >>= __ffs(clk->clksel_mask); | 324 | r >>= __ffs(clk->clksel_mask); |
325 | 325 | ||
326 | for (clks = clk->clksel; clks->parent && !found; clks++) { | 326 | for (clks = clk->clksel; clks->parent && !found; clks++) { |
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c index 924c230f8948..47f9562ca7aa 100644 --- a/arch/arm/mach-omap2/clkt_dpll.c +++ b/arch/arm/mach-omap2/clkt_dpll.c | |||
@@ -196,7 +196,7 @@ u8 omap2_init_dpll_parent(struct clk_hw *hw) | |||
196 | if (!dd) | 196 | if (!dd) |
197 | return -EINVAL; | 197 | return -EINVAL; |
198 | 198 | ||
199 | v = __raw_readl(dd->control_reg); | 199 | v = omap2_clk_readl(clk, dd->control_reg); |
200 | v &= dd->enable_mask; | 200 | v &= dd->enable_mask; |
201 | v >>= __ffs(dd->enable_mask); | 201 | v >>= __ffs(dd->enable_mask); |
202 | 202 | ||
@@ -243,7 +243,7 @@ unsigned long omap2_get_dpll_rate(struct clk_hw_omap *clk) | |||
243 | return 0; | 243 | return 0; |
244 | 244 | ||
245 | /* Return bypass rate if DPLL is bypassed */ | 245 | /* Return bypass rate if DPLL is bypassed */ |
246 | v = __raw_readl(dd->control_reg); | 246 | v = omap2_clk_readl(clk, dd->control_reg); |
247 | v &= dd->enable_mask; | 247 | v &= dd->enable_mask; |
248 | v >>= __ffs(dd->enable_mask); | 248 | v >>= __ffs(dd->enable_mask); |
249 | 249 | ||
@@ -262,7 +262,7 @@ unsigned long omap2_get_dpll_rate(struct clk_hw_omap *clk) | |||
262 | return __clk_get_rate(dd->clk_bypass); | 262 | return __clk_get_rate(dd->clk_bypass); |
263 | } | 263 | } |
264 | 264 | ||
265 | v = __raw_readl(dd->mult_div1_reg); | 265 | v = omap2_clk_readl(clk, dd->mult_div1_reg); |
266 | dpll_mult = v & dd->mult_mask; | 266 | dpll_mult = v & dd->mult_mask; |
267 | dpll_mult >>= __ffs(dd->mult_mask); | 267 | dpll_mult >>= __ffs(dd->mult_mask); |
268 | dpll_div = v & dd->div1_mask; | 268 | dpll_div = v & dd->div1_mask; |
diff --git a/arch/arm/mach-omap2/clkt_iclk.c b/arch/arm/mach-omap2/clkt_iclk.c index f10eb03ce3e2..333f0a666171 100644 --- a/arch/arm/mach-omap2/clkt_iclk.c +++ b/arch/arm/mach-omap2/clkt_iclk.c | |||
@@ -25,25 +25,29 @@ | |||
25 | /* XXX */ | 25 | /* XXX */ |
26 | void omap2_clkt_iclk_allow_idle(struct clk_hw_omap *clk) | 26 | void omap2_clkt_iclk_allow_idle(struct clk_hw_omap *clk) |
27 | { | 27 | { |
28 | u32 v, r; | 28 | u32 v; |
29 | void __iomem *r; | ||
29 | 30 | ||
30 | r = ((__force u32)clk->enable_reg ^ (CM_AUTOIDLE ^ CM_ICLKEN)); | 31 | r = (__force void __iomem *) |
32 | ((__force u32)clk->enable_reg ^ (CM_AUTOIDLE ^ CM_ICLKEN)); | ||
31 | 33 | ||
32 | v = __raw_readl((__force void __iomem *)r); | 34 | v = omap2_clk_readl(clk, r); |
33 | v |= (1 << clk->enable_bit); | 35 | v |= (1 << clk->enable_bit); |
34 | __raw_writel(v, (__force void __iomem *)r); | 36 | omap2_clk_writel(v, clk, r); |
35 | } | 37 | } |
36 | 38 | ||
37 | /* XXX */ | 39 | /* XXX */ |
38 | void omap2_clkt_iclk_deny_idle(struct clk_hw_omap *clk) | 40 | void omap2_clkt_iclk_deny_idle(struct clk_hw_omap *clk) |
39 | { | 41 | { |
40 | u32 v, r; | 42 | u32 v; |
43 | void __iomem *r; | ||
41 | 44 | ||
42 | r = ((__force u32)clk->enable_reg ^ (CM_AUTOIDLE ^ CM_ICLKEN)); | 45 | r = (__force void __iomem *) |
46 | ((__force u32)clk->enable_reg ^ (CM_AUTOIDLE ^ CM_ICLKEN)); | ||
43 | 47 | ||
44 | v = __raw_readl((__force void __iomem *)r); | 48 | v = omap2_clk_readl(clk, r); |
45 | v &= ~(1 << clk->enable_bit); | 49 | v &= ~(1 << clk->enable_bit); |
46 | __raw_writel(v, (__force void __iomem *)r); | 50 | omap2_clk_writel(v, clk, r); |
47 | } | 51 | } |
48 | 52 | ||
49 | /* Public data */ | 53 | /* Public data */ |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index be53bb21301c..591581a66532 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -111,6 +111,7 @@ unsigned long omap_fixed_divisor_recalc(struct clk_hw *hw, | |||
111 | 111 | ||
112 | /** | 112 | /** |
113 | * _wait_idlest_generic - wait for a module to leave the idle state | 113 | * _wait_idlest_generic - wait for a module to leave the idle state |
114 | * @clk: module clock to wait for (needed for register offsets) | ||
114 | * @reg: virtual address of module IDLEST register | 115 | * @reg: virtual address of module IDLEST register |
115 | * @mask: value to mask against to determine if the module is active | 116 | * @mask: value to mask against to determine if the module is active |
116 | * @idlest: idle state indicator (0 or 1) for the clock | 117 | * @idlest: idle state indicator (0 or 1) for the clock |
@@ -122,14 +123,14 @@ unsigned long omap_fixed_divisor_recalc(struct clk_hw *hw, | |||
122 | * elapsed. XXX Deprecated - should be moved into drivers for the | 123 | * elapsed. XXX Deprecated - should be moved into drivers for the |
123 | * individual IP block that the IDLEST register exists in. | 124 | * individual IP block that the IDLEST register exists in. |
124 | */ | 125 | */ |
125 | static int _wait_idlest_generic(void __iomem *reg, u32 mask, u8 idlest, | 126 | static int _wait_idlest_generic(struct clk_hw_omap *clk, void __iomem *reg, |
126 | const char *name) | 127 | u32 mask, u8 idlest, const char *name) |
127 | { | 128 | { |
128 | int i = 0, ena = 0; | 129 | int i = 0, ena = 0; |
129 | 130 | ||
130 | ena = (idlest) ? 0 : mask; | 131 | ena = (idlest) ? 0 : mask; |
131 | 132 | ||
132 | omap_test_timeout(((__raw_readl(reg) & mask) == ena), | 133 | omap_test_timeout(((omap2_clk_readl(clk, reg) & mask) == ena), |
133 | MAX_MODULE_ENABLE_WAIT, i); | 134 | MAX_MODULE_ENABLE_WAIT, i); |
134 | 135 | ||
135 | if (i < MAX_MODULE_ENABLE_WAIT) | 136 | if (i < MAX_MODULE_ENABLE_WAIT) |
@@ -162,7 +163,7 @@ static void _omap2_module_wait_ready(struct clk_hw_omap *clk) | |||
162 | /* Not all modules have multiple clocks that their IDLEST depends on */ | 163 | /* Not all modules have multiple clocks that their IDLEST depends on */ |
163 | if (clk->ops->find_companion) { | 164 | if (clk->ops->find_companion) { |
164 | clk->ops->find_companion(clk, &companion_reg, &other_bit); | 165 | clk->ops->find_companion(clk, &companion_reg, &other_bit); |
165 | if (!(__raw_readl(companion_reg) & (1 << other_bit))) | 166 | if (!(omap2_clk_readl(clk, companion_reg) & (1 << other_bit))) |
166 | return; | 167 | return; |
167 | } | 168 | } |
168 | 169 | ||
@@ -170,8 +171,8 @@ static void _omap2_module_wait_ready(struct clk_hw_omap *clk) | |||
170 | r = cm_split_idlest_reg(idlest_reg, &prcm_mod, &idlest_reg_id); | 171 | r = cm_split_idlest_reg(idlest_reg, &prcm_mod, &idlest_reg_id); |
171 | if (r) { | 172 | if (r) { |
172 | /* IDLEST register not in the CM module */ | 173 | /* IDLEST register not in the CM module */ |
173 | _wait_idlest_generic(idlest_reg, (1 << idlest_bit), idlest_val, | 174 | _wait_idlest_generic(clk, idlest_reg, (1 << idlest_bit), |
174 | __clk_get_name(clk->hw.clk)); | 175 | idlest_val, __clk_get_name(clk->hw.clk)); |
175 | } else { | 176 | } else { |
176 | cm_wait_module_ready(prcm_mod, idlest_reg_id, idlest_bit); | 177 | cm_wait_module_ready(prcm_mod, idlest_reg_id, idlest_bit); |
177 | }; | 178 | }; |
@@ -333,13 +334,13 @@ int omap2_dflt_clk_enable(struct clk_hw *hw) | |||
333 | } | 334 | } |
334 | 335 | ||
335 | /* FIXME should not have INVERT_ENABLE bit here */ | 336 | /* FIXME should not have INVERT_ENABLE bit here */ |
336 | v = __raw_readl(clk->enable_reg); | 337 | v = omap2_clk_readl(clk, clk->enable_reg); |
337 | if (clk->flags & INVERT_ENABLE) | 338 | if (clk->flags & INVERT_ENABLE) |
338 | v &= ~(1 << clk->enable_bit); | 339 | v &= ~(1 << clk->enable_bit); |
339 | else | 340 | else |
340 | v |= (1 << clk->enable_bit); | 341 | v |= (1 << clk->enable_bit); |
341 | __raw_writel(v, clk->enable_reg); | 342 | omap2_clk_writel(v, clk, clk->enable_reg); |
342 | v = __raw_readl(clk->enable_reg); /* OCP barrier */ | 343 | v = omap2_clk_readl(clk, clk->enable_reg); /* OCP barrier */ |
343 | 344 | ||
344 | if (clk->ops && clk->ops->find_idlest) | 345 | if (clk->ops && clk->ops->find_idlest) |
345 | _omap2_module_wait_ready(clk); | 346 | _omap2_module_wait_ready(clk); |
@@ -377,12 +378,12 @@ void omap2_dflt_clk_disable(struct clk_hw *hw) | |||
377 | return; | 378 | return; |
378 | } | 379 | } |
379 | 380 | ||
380 | v = __raw_readl(clk->enable_reg); | 381 | v = omap2_clk_readl(clk, clk->enable_reg); |
381 | if (clk->flags & INVERT_ENABLE) | 382 | if (clk->flags & INVERT_ENABLE) |
382 | v |= (1 << clk->enable_bit); | 383 | v |= (1 << clk->enable_bit); |
383 | else | 384 | else |
384 | v &= ~(1 << clk->enable_bit); | 385 | v &= ~(1 << clk->enable_bit); |
385 | __raw_writel(v, clk->enable_reg); | 386 | omap2_clk_writel(v, clk, clk->enable_reg); |
386 | /* No OCP barrier needed here since it is a disable operation */ | 387 | /* No OCP barrier needed here since it is a disable operation */ |
387 | 388 | ||
388 | if (clkdm_control && clk->clkdm) | 389 | if (clkdm_control && clk->clkdm) |
@@ -478,7 +479,7 @@ int omap2_dflt_clk_is_enabled(struct clk_hw *hw) | |||
478 | struct clk_hw_omap *clk = to_clk_hw_omap(hw); | 479 | struct clk_hw_omap *clk = to_clk_hw_omap(hw); |
479 | u32 v; | 480 | u32 v; |
480 | 481 | ||
481 | v = __raw_readl(clk->enable_reg); | 482 | v = omap2_clk_readl(clk, clk->enable_reg); |
482 | 483 | ||
483 | if (clk->flags & INVERT_ENABLE) | 484 | if (clk->flags & INVERT_ENABLE) |
484 | v ^= BIT(clk->enable_bit); | 485 | v ^= BIT(clk->enable_bit); |
diff --git a/arch/arm/mach-omap2/clock36xx.c b/arch/arm/mach-omap2/clock36xx.c index bbd6a3f717e6..91ccb962e09e 100644 --- a/arch/arm/mach-omap2/clock36xx.c +++ b/arch/arm/mach-omap2/clock36xx.c | |||
@@ -43,6 +43,7 @@ int omap36xx_pwrdn_clk_enable_with_hsdiv_restore(struct clk_hw *clk) | |||
43 | struct clk_divider *parent; | 43 | struct clk_divider *parent; |
44 | struct clk_hw *parent_hw; | 44 | struct clk_hw *parent_hw; |
45 | u32 dummy_v, orig_v; | 45 | u32 dummy_v, orig_v; |
46 | struct clk_hw_omap *omap_clk = to_clk_hw_omap(clk); | ||
46 | int ret; | 47 | int ret; |
47 | 48 | ||
48 | /* Clear PWRDN bit of HSDIVIDER */ | 49 | /* Clear PWRDN bit of HSDIVIDER */ |
@@ -53,15 +54,15 @@ int omap36xx_pwrdn_clk_enable_with_hsdiv_restore(struct clk_hw *clk) | |||
53 | 54 | ||
54 | /* Restore the dividers */ | 55 | /* Restore the dividers */ |
55 | if (!ret) { | 56 | if (!ret) { |
56 | orig_v = __raw_readl(parent->reg); | 57 | orig_v = omap2_clk_readl(omap_clk, parent->reg); |
57 | dummy_v = orig_v; | 58 | dummy_v = orig_v; |
58 | 59 | ||
59 | /* Write any other value different from the Read value */ | 60 | /* Write any other value different from the Read value */ |
60 | dummy_v ^= (1 << parent->shift); | 61 | dummy_v ^= (1 << parent->shift); |
61 | __raw_writel(dummy_v, parent->reg); | 62 | omap2_clk_writel(dummy_v, omap_clk, parent->reg); |
62 | 63 | ||
63 | /* Write the original divider */ | 64 | /* Write the original divider */ |
64 | __raw_writel(orig_v, parent->reg); | 65 | omap2_clk_writel(orig_v, omap_clk, parent->reg); |
65 | } | 66 | } |
66 | 67 | ||
67 | return ret; | 68 | return ret; |
diff --git a/arch/arm/mach-omap2/dpll3xxx.c b/arch/arm/mach-omap2/dpll3xxx.c index 3a0296cfcace..3185ced807c9 100644 --- a/arch/arm/mach-omap2/dpll3xxx.c +++ b/arch/arm/mach-omap2/dpll3xxx.c | |||
@@ -50,10 +50,10 @@ static void _omap3_dpll_write_clken(struct clk_hw_omap *clk, u8 clken_bits) | |||
50 | 50 | ||
51 | dd = clk->dpll_data; | 51 | dd = clk->dpll_data; |
52 | 52 | ||
53 | v = __raw_readl(dd->control_reg); | 53 | v = omap2_clk_readl(clk, dd->control_reg); |
54 | v &= ~dd->enable_mask; | 54 | v &= ~dd->enable_mask; |
55 | v |= clken_bits << __ffs(dd->enable_mask); | 55 | v |= clken_bits << __ffs(dd->enable_mask); |
56 | __raw_writel(v, dd->control_reg); | 56 | omap2_clk_writel(v, clk, dd->control_reg); |
57 | } | 57 | } |
58 | 58 | ||
59 | /* _omap3_wait_dpll_status: wait for a DPLL to enter a specific state */ | 59 | /* _omap3_wait_dpll_status: wait for a DPLL to enter a specific state */ |
@@ -69,8 +69,8 @@ static int _omap3_wait_dpll_status(struct clk_hw_omap *clk, u8 state) | |||
69 | 69 | ||
70 | state <<= __ffs(dd->idlest_mask); | 70 | state <<= __ffs(dd->idlest_mask); |
71 | 71 | ||
72 | while (((__raw_readl(dd->idlest_reg) & dd->idlest_mask) != state) && | 72 | while (((omap2_clk_readl(clk, dd->idlest_reg) & dd->idlest_mask) |
73 | i < MAX_DPLL_WAIT_TRIES) { | 73 | != state) && i < MAX_DPLL_WAIT_TRIES) { |
74 | i++; | 74 | i++; |
75 | udelay(1); | 75 | udelay(1); |
76 | } | 76 | } |
@@ -147,7 +147,7 @@ static int _omap3_noncore_dpll_lock(struct clk_hw_omap *clk) | |||
147 | state <<= __ffs(dd->idlest_mask); | 147 | state <<= __ffs(dd->idlest_mask); |
148 | 148 | ||
149 | /* Check if already locked */ | 149 | /* Check if already locked */ |
150 | if ((__raw_readl(dd->idlest_reg) & dd->idlest_mask) == state) | 150 | if ((omap2_clk_readl(clk, dd->idlest_reg) & dd->idlest_mask) == state) |
151 | goto done; | 151 | goto done; |
152 | 152 | ||
153 | ai = omap3_dpll_autoidle_read(clk); | 153 | ai = omap3_dpll_autoidle_read(clk); |
@@ -311,14 +311,14 @@ static int omap3_noncore_dpll_program(struct clk_hw_omap *clk, u16 freqsel) | |||
311 | * only since freqsel field is no longer present on other devices. | 311 | * only since freqsel field is no longer present on other devices. |
312 | */ | 312 | */ |
313 | if (cpu_is_omap343x()) { | 313 | if (cpu_is_omap343x()) { |
314 | v = __raw_readl(dd->control_reg); | 314 | v = omap2_clk_readl(clk, dd->control_reg); |
315 | v &= ~dd->freqsel_mask; | 315 | v &= ~dd->freqsel_mask; |
316 | v |= freqsel << __ffs(dd->freqsel_mask); | 316 | v |= freqsel << __ffs(dd->freqsel_mask); |
317 | __raw_writel(v, dd->control_reg); | 317 | omap2_clk_writel(v, clk, dd->control_reg); |
318 | } | 318 | } |
319 | 319 | ||
320 | /* Set DPLL multiplier, divider */ | 320 | /* Set DPLL multiplier, divider */ |
321 | v = __raw_readl(dd->mult_div1_reg); | 321 | v = omap2_clk_readl(clk, dd->mult_div1_reg); |
322 | v &= ~(dd->mult_mask | dd->div1_mask); | 322 | v &= ~(dd->mult_mask | dd->div1_mask); |
323 | v |= dd->last_rounded_m << __ffs(dd->mult_mask); | 323 | v |= dd->last_rounded_m << __ffs(dd->mult_mask); |
324 | v |= (dd->last_rounded_n - 1) << __ffs(dd->div1_mask); | 324 | v |= (dd->last_rounded_n - 1) << __ffs(dd->div1_mask); |
@@ -336,11 +336,11 @@ static int omap3_noncore_dpll_program(struct clk_hw_omap *clk, u16 freqsel) | |||
336 | v |= sd_div << __ffs(dd->sddiv_mask); | 336 | v |= sd_div << __ffs(dd->sddiv_mask); |
337 | } | 337 | } |
338 | 338 | ||
339 | __raw_writel(v, dd->mult_div1_reg); | 339 | omap2_clk_writel(v, clk, dd->mult_div1_reg); |
340 | 340 | ||
341 | /* Set 4X multiplier and low-power mode */ | 341 | /* Set 4X multiplier and low-power mode */ |
342 | if (dd->m4xen_mask || dd->lpmode_mask) { | 342 | if (dd->m4xen_mask || dd->lpmode_mask) { |
343 | v = __raw_readl(dd->control_reg); | 343 | v = omap2_clk_readl(clk, dd->control_reg); |
344 | 344 | ||
345 | if (dd->m4xen_mask) { | 345 | if (dd->m4xen_mask) { |
346 | if (dd->last_rounded_m4xen) | 346 | if (dd->last_rounded_m4xen) |
@@ -356,7 +356,7 @@ static int omap3_noncore_dpll_program(struct clk_hw_omap *clk, u16 freqsel) | |||
356 | v &= ~dd->lpmode_mask; | 356 | v &= ~dd->lpmode_mask; |
357 | } | 357 | } |
358 | 358 | ||
359 | __raw_writel(v, dd->control_reg); | 359 | omap2_clk_writel(v, clk, dd->control_reg); |
360 | } | 360 | } |
361 | 361 | ||
362 | /* We let the clock framework set the other output dividers later */ | 362 | /* We let the clock framework set the other output dividers later */ |
@@ -554,7 +554,7 @@ u32 omap3_dpll_autoidle_read(struct clk_hw_omap *clk) | |||
554 | if (!dd->autoidle_reg) | 554 | if (!dd->autoidle_reg) |
555 | return -EINVAL; | 555 | return -EINVAL; |
556 | 556 | ||
557 | v = __raw_readl(dd->autoidle_reg); | 557 | v = omap2_clk_readl(clk, dd->autoidle_reg); |
558 | v &= dd->autoidle_mask; | 558 | v &= dd->autoidle_mask; |
559 | v >>= __ffs(dd->autoidle_mask); | 559 | v >>= __ffs(dd->autoidle_mask); |
560 | 560 | ||
@@ -588,10 +588,10 @@ void omap3_dpll_allow_idle(struct clk_hw_omap *clk) | |||
588 | * by writing 0x5 instead of 0x1. Add some mechanism to | 588 | * by writing 0x5 instead of 0x1. Add some mechanism to |
589 | * optionally enter this mode. | 589 | * optionally enter this mode. |
590 | */ | 590 | */ |
591 | v = __raw_readl(dd->autoidle_reg); | 591 | v = omap2_clk_readl(clk, dd->autoidle_reg); |
592 | v &= ~dd->autoidle_mask; | 592 | v &= ~dd->autoidle_mask; |
593 | v |= DPLL_AUTOIDLE_LOW_POWER_STOP << __ffs(dd->autoidle_mask); | 593 | v |= DPLL_AUTOIDLE_LOW_POWER_STOP << __ffs(dd->autoidle_mask); |
594 | __raw_writel(v, dd->autoidle_reg); | 594 | omap2_clk_writel(v, clk, dd->autoidle_reg); |
595 | 595 | ||
596 | } | 596 | } |
597 | 597 | ||
@@ -614,10 +614,10 @@ void omap3_dpll_deny_idle(struct clk_hw_omap *clk) | |||
614 | if (!dd->autoidle_reg) | 614 | if (!dd->autoidle_reg) |
615 | return; | 615 | return; |
616 | 616 | ||
617 | v = __raw_readl(dd->autoidle_reg); | 617 | v = omap2_clk_readl(clk, dd->autoidle_reg); |
618 | v &= ~dd->autoidle_mask; | 618 | v &= ~dd->autoidle_mask; |
619 | v |= DPLL_AUTOIDLE_DISABLE << __ffs(dd->autoidle_mask); | 619 | v |= DPLL_AUTOIDLE_DISABLE << __ffs(dd->autoidle_mask); |
620 | __raw_writel(v, dd->autoidle_reg); | 620 | omap2_clk_writel(v, clk, dd->autoidle_reg); |
621 | 621 | ||
622 | } | 622 | } |
623 | 623 | ||
@@ -639,6 +639,9 @@ unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw, | |||
639 | struct clk_hw_omap *pclk = NULL; | 639 | struct clk_hw_omap *pclk = NULL; |
640 | struct clk *parent; | 640 | struct clk *parent; |
641 | 641 | ||
642 | if (!parent_rate) | ||
643 | return 0; | ||
644 | |||
642 | /* Walk up the parents of clk, looking for a DPLL */ | 645 | /* Walk up the parents of clk, looking for a DPLL */ |
643 | do { | 646 | do { |
644 | do { | 647 | do { |
@@ -660,7 +663,7 @@ unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw, | |||
660 | 663 | ||
661 | WARN_ON(!dd->enable_mask); | 664 | WARN_ON(!dd->enable_mask); |
662 | 665 | ||
663 | v = __raw_readl(dd->control_reg) & dd->enable_mask; | 666 | v = omap2_clk_readl(pclk, dd->control_reg) & dd->enable_mask; |
664 | v >>= __ffs(dd->enable_mask); | 667 | v >>= __ffs(dd->enable_mask); |
665 | if ((v != OMAP3XXX_EN_DPLL_LOCKED) || (dd->flags & DPLL_J_TYPE)) | 668 | if ((v != OMAP3XXX_EN_DPLL_LOCKED) || (dd->flags & DPLL_J_TYPE)) |
666 | rate = parent_rate; | 669 | rate = parent_rate; |
diff --git a/arch/arm/mach-omap2/dpll44xx.c b/arch/arm/mach-omap2/dpll44xx.c index d28b0f726715..52f9438b92f2 100644 --- a/arch/arm/mach-omap2/dpll44xx.c +++ b/arch/arm/mach-omap2/dpll44xx.c | |||
@@ -42,7 +42,7 @@ int omap4_dpllmx_gatectrl_read(struct clk_hw_omap *clk) | |||
42 | OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK : | 42 | OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK : |
43 | OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK; | 43 | OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK; |
44 | 44 | ||
45 | v = __raw_readl(clk->clksel_reg); | 45 | v = omap2_clk_readl(clk, clk->clksel_reg); |
46 | v &= mask; | 46 | v &= mask; |
47 | v >>= __ffs(mask); | 47 | v >>= __ffs(mask); |
48 | 48 | ||
@@ -61,10 +61,10 @@ void omap4_dpllmx_allow_gatectrl(struct clk_hw_omap *clk) | |||
61 | OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK : | 61 | OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK : |
62 | OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK; | 62 | OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK; |
63 | 63 | ||
64 | v = __raw_readl(clk->clksel_reg); | 64 | v = omap2_clk_readl(clk, clk->clksel_reg); |
65 | /* Clear the bit to allow gatectrl */ | 65 | /* Clear the bit to allow gatectrl */ |
66 | v &= ~mask; | 66 | v &= ~mask; |
67 | __raw_writel(v, clk->clksel_reg); | 67 | omap2_clk_writel(v, clk, clk->clksel_reg); |
68 | } | 68 | } |
69 | 69 | ||
70 | void omap4_dpllmx_deny_gatectrl(struct clk_hw_omap *clk) | 70 | void omap4_dpllmx_deny_gatectrl(struct clk_hw_omap *clk) |
@@ -79,10 +79,10 @@ void omap4_dpllmx_deny_gatectrl(struct clk_hw_omap *clk) | |||
79 | OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK : | 79 | OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK : |
80 | OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK; | 80 | OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK; |
81 | 81 | ||
82 | v = __raw_readl(clk->clksel_reg); | 82 | v = omap2_clk_readl(clk, clk->clksel_reg); |
83 | /* Set the bit to deny gatectrl */ | 83 | /* Set the bit to deny gatectrl */ |
84 | v |= mask; | 84 | v |= mask; |
85 | __raw_writel(v, clk->clksel_reg); | 85 | omap2_clk_writel(v, clk, clk->clksel_reg); |
86 | } | 86 | } |
87 | 87 | ||
88 | const struct clk_hw_omap_ops clkhwops_omap4_dpllmx = { | 88 | const struct clk_hw_omap_ops clkhwops_omap4_dpllmx = { |
@@ -140,7 +140,7 @@ unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, | |||
140 | rate = omap2_get_dpll_rate(clk); | 140 | rate = omap2_get_dpll_rate(clk); |
141 | 141 | ||
142 | /* regm4xen adds a multiplier of 4 to DPLL calculations */ | 142 | /* regm4xen adds a multiplier of 4 to DPLL calculations */ |
143 | v = __raw_readl(dd->control_reg); | 143 | v = omap2_clk_readl(clk, dd->control_reg); |
144 | if (v & OMAP4430_DPLL_REGM4XEN_MASK) | 144 | if (v & OMAP4430_DPLL_REGM4XEN_MASK) |
145 | rate *= OMAP4430_REGM4XEN_MULT; | 145 | rate *= OMAP4430_REGM4XEN_MULT; |
146 | 146 | ||