ARM: OMAP: Remove cm_rmw_reg_bits()
authorTony Lindgren <tony@atomide.com>
Wed, 4 Jun 2008 18:35:12 +0000 (11:35 -0700)
committerTony Lindgren <tony@atomide.com>
Wed, 4 Jun 2008 18:35:12 +0000 (11:35 -0700)
If done, rmw() should be implemented in a generic way and
discussed on LKML.

Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/clock.c
arch/arm/mach-omap2/clock34xx.c
arch/arm/mach-omap2/cm.h

index 963c259..d3ab537 100644 (file)
@@ -633,6 +633,7 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
 {
        u32 field_mask, field_val, validrate, new_div = 0;
        void __iomem *div_addr;
+       u32 v;
 
        validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);
        if (validrate != rate)
@@ -646,7 +647,10 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
        if (field_val == ~0)
                return -EINVAL;
 
-       cm_rmw_reg_bits(field_mask, field_val << __ffs(field_mask), div_addr);
+       v = __raw_readl(div_addr);
+       v &= ~field_mask;
+       v |= field_val << __ffs(field_mask);
+       __raw_writel(v, div_addr);
 
        wmb();
 
index 2aa411d..408b51a 100644 (file)
@@ -62,11 +62,14 @@ static void omap3_dpll_recalc(struct clk *clk)
 static void _omap3_dpll_write_clken(struct clk *clk, u8 clken_bits)
 {
        const struct dpll_data *dd;
+       u32 v;
 
        dd = clk->dpll_data;
 
-       cm_rmw_reg_bits(dd->enable_mask, clken_bits << __ffs(dd->enable_mask),
-                       dd->control_reg);
+       v = __raw_readl(dd->control_reg);
+       v &= ~dd->enable_mask;
+       v |= clken_bits << __ffs(dd->enable_mask);
+       __raw_writel(v, dd->control_reg);
 }
 
 /* _omap3_wait_dpll_status: wait for a DPLL to enter a specific state */
@@ -443,6 +446,7 @@ static u32 omap3_dpll_autoidle_read(struct clk *clk)
 static void omap3_dpll_allow_idle(struct clk *clk)
 {
        const struct dpll_data *dd;
+       u32 v;
 
        if (!clk || !clk->dpll_data)
                return;
@@ -454,9 +458,10 @@ static void omap3_dpll_allow_idle(struct clk *clk)
         * by writing 0x5 instead of 0x1.  Add some mechanism to
         * optionally enter this mode.
         */
-       cm_rmw_reg_bits(dd->autoidle_mask,
-                       DPLL_AUTOIDLE_LOW_POWER_STOP << __ffs(dd->autoidle_mask),
-                       dd->autoidle_reg);
+       v = __raw_readl(dd->autoidle_reg);
+       v &= ~dd->autoidle_mask;
+       v |= DPLL_AUTOIDLE_LOW_POWER_STOP << __ffs(dd->autoidle_mask);
+       __raw_writel(v, dd->autoidle_reg);
 }
 
 /**
@@ -468,15 +473,17 @@ static void omap3_dpll_allow_idle(struct clk *clk)
 static void omap3_dpll_deny_idle(struct clk *clk)
 {
        const struct dpll_data *dd;
+       u32 v;
 
        if (!clk || !clk->dpll_data)
                return;
 
        dd = clk->dpll_data;
 
-       cm_rmw_reg_bits(dd->autoidle_mask,
-                       DPLL_AUTOIDLE_DISABLE << __ffs(dd->autoidle_mask),
-                       dd->autoidle_reg);
+       v = __raw_readl(dd->autoidle_reg);
+       v &= ~dd->autoidle_mask;
+       v |= DPLL_AUTOIDLE_DISABLE << __ffs(dd->autoidle_mask);
+       __raw_writel(v, dd->autoidle_reg);
 }
 
 /* Clock control for DPLL outputs */
index bd7bd6e..bacadcb 100644 (file)
 #define OMAP3430_CM_CLKOUT_CTRL                                                \
                                OMAP34XX_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070)
 
-#ifndef __ASSEMBLER__
-
-/* Read-modify-write bits in a CM register */
-static inline u32 cm_rmw_reg_bits(u32 mask, u32 bits, void __iomem *va)
-{
-       u32 v;
-
-       v = __raw_readl(va);
-       v &= ~mask;
-       v |= bits;
-       __raw_writel(v, va);
-
-       return v;
-}
-
-#endif
-
 /*
  * Module specific CM registers from CM_BASE + domain offset
  * Use cm_{read,write}_mod_reg() with these registers.