diff options
author | Tero Kristo <t-kristo@ti.com> | 2013-10-22 04:49:58 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2014-01-17 15:37:00 -0500 |
commit | 519ab8b202f37fb76cc6f32ef34da79716680d03 (patch) | |
tree | 2ac756c18fdde46c718b53a0b4fae7fc933d3147 /arch/arm/mach-omap2/dpll3xxx.c | |
parent | 3ada6b10aaf2ff5c7dc6e8add6fdf1b7333d1b34 (diff) |
ARM: OMAP2+: clock: use driver API instead of direct memory read/write
Clock nodes shall use the services provided by underlying drivers to access
the hardware registers instead of direct memory read/write. Thus, change
all the code to use the new omap2_clk_readl / omap2_clk_writel APIs for this.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'arch/arm/mach-omap2/dpll3xxx.c')
-rw-r--r-- | arch/arm/mach-omap2/dpll3xxx.c | 37 |
1 files changed, 20 insertions, 17 deletions
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; |