Commit 7add6d09 authored by Tony Lindgren's avatar Tony Lindgren

ARM: OMAP2: Remove unnecessary abstraction functions for CM and PRM

Remove cm_write_reg(), cm_read_reg(), prm_write_reg(), prm_read_reg()
and replace them with __raw_readl() and __raw_writel().

Based on comments from RMK.
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent d8e09b5b
...@@ -102,7 +102,7 @@ u32 omap2_get_dpll_rate(struct clk *clk) ...@@ -102,7 +102,7 @@ u32 omap2_get_dpll_rate(struct clk *clk)
if (!dd) if (!dd)
return 0; return 0;
dpll = cm_read_reg(dd->mult_div1_reg); dpll = __raw_readl(dd->mult_div1_reg);
dpll_mult = dpll & dd->mult_mask; dpll_mult = dpll & dd->mult_mask;
dpll_mult >>= __ffs(dd->mult_mask); dpll_mult >>= __ffs(dd->mult_mask);
dpll_div = dpll & dd->div1_mask; dpll_div = dpll & dd->div1_mask;
...@@ -153,7 +153,7 @@ int omap2_wait_clock_ready(void __iomem *reg, u32 mask, const char *name) ...@@ -153,7 +153,7 @@ int omap2_wait_clock_ready(void __iomem *reg, u32 mask, const char *name)
} }
/* Wait for lock */ /* Wait for lock */
while (((cm_read_reg(reg) & mask) != ena) && while (((__raw_readl(reg) & mask) != ena) &&
(i++ < MAX_CLOCK_ENABLE_WAIT)) { (i++ < MAX_CLOCK_ENABLE_WAIT)) {
udelay(1); udelay(1);
} }
...@@ -211,7 +211,7 @@ static void omap2_clk_wait_ready(struct clk *clk) ...@@ -211,7 +211,7 @@ static void omap2_clk_wait_ready(struct clk *clk)
/* Check if both functional and interface clocks /* Check if both functional and interface clocks
* are running. */ * are running. */
bit = 1 << clk->enable_bit; bit = 1 << clk->enable_bit;
if (!(cm_read_reg(other_reg) & bit)) if (!(__raw_readl(other_reg) & bit))
return; return;
st_reg = (void __iomem *)(((u32)other_reg & ~0xf0) | 0x20); /* CM_IDLEST* */ st_reg = (void __iomem *)(((u32)other_reg & ~0xf0) | 0x20); /* CM_IDLEST* */
...@@ -237,12 +237,12 @@ int _omap2_clk_enable(struct clk *clk) ...@@ -237,12 +237,12 @@ int _omap2_clk_enable(struct clk *clk)
return 0; /* REVISIT: -EINVAL */ return 0; /* REVISIT: -EINVAL */
} }
regval32 = cm_read_reg(clk->enable_reg); regval32 = __raw_readl(clk->enable_reg);
if (clk->flags & INVERT_ENABLE) if (clk->flags & INVERT_ENABLE)
regval32 &= ~(1 << clk->enable_bit); regval32 &= ~(1 << clk->enable_bit);
else else
regval32 |= (1 << clk->enable_bit); regval32 |= (1 << clk->enable_bit);
cm_write_reg(regval32, clk->enable_reg); __raw_writel(regval32, clk->enable_reg);
wmb(); wmb();
omap2_clk_wait_ready(clk); omap2_clk_wait_ready(clk);
...@@ -273,12 +273,12 @@ void _omap2_clk_disable(struct clk *clk) ...@@ -273,12 +273,12 @@ void _omap2_clk_disable(struct clk *clk)
return; return;
} }
regval32 = cm_read_reg(clk->enable_reg); regval32 = __raw_readl(clk->enable_reg);
if (clk->flags & INVERT_ENABLE) if (clk->flags & INVERT_ENABLE)
regval32 |= (1 << clk->enable_bit); regval32 |= (1 << clk->enable_bit);
else else
regval32 &= ~(1 << clk->enable_bit); regval32 &= ~(1 << clk->enable_bit);
cm_write_reg(regval32, clk->enable_reg); __raw_writel(regval32, clk->enable_reg);
wmb(); wmb();
} }
...@@ -569,7 +569,7 @@ u32 omap2_clksel_get_divisor(struct clk *clk) ...@@ -569,7 +569,7 @@ u32 omap2_clksel_get_divisor(struct clk *clk)
if (div_addr == 0) if (div_addr == 0)
return 0; return 0;
field_val = cm_read_reg(div_addr) & field_mask; field_val = __raw_readl(div_addr) & field_mask;
field_val >>= __ffs(field_mask); field_val >>= __ffs(field_mask);
return omap2_clksel_to_divisor(clk, field_val); return omap2_clksel_to_divisor(clk, field_val);
...@@ -599,7 +599,7 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate) ...@@ -599,7 +599,7 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
clk->rate = clk->parent->rate / new_div; clk->rate = clk->parent->rate / new_div;
if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) { if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) {
prm_write_reg(OMAP24XX_VALID_CONFIG, OMAP24XX_PRCM_CLKCFG_CTRL); __raw_writel(OMAP24XX_VALID_CONFIG, OMAP24XX_PRCM_CLKCFG_CTRL);
wmb(); wmb();
} }
...@@ -695,7 +695,7 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) ...@@ -695,7 +695,7 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
wmb(); wmb();
if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) { if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) {
prm_write_reg(OMAP24XX_VALID_CONFIG, __raw_writel(OMAP24XX_VALID_CONFIG,
OMAP24XX_PRCM_CLKCFG_CTRL); OMAP24XX_PRCM_CLKCFG_CTRL);
wmb(); wmb();
} }
...@@ -731,7 +731,7 @@ void omap2_clk_disable_unused(struct clk *clk) ...@@ -731,7 +731,7 @@ void omap2_clk_disable_unused(struct clk *clk)
v = (clk->flags & INVERT_ENABLE) ? (1 << clk->enable_bit) : 0; v = (clk->flags & INVERT_ENABLE) ? (1 << clk->enable_bit) : 0;
regval32 = cm_read_reg(clk->enable_reg); regval32 = __raw_readl(clk->enable_reg);
if ((regval32 & (1 << clk->enable_bit)) == v) if ((regval32 & (1 << clk->enable_bit)) == v)
return; return;
......
...@@ -203,7 +203,7 @@ static int omap2_reprogram_dpll(struct clk *clk, unsigned long rate) ...@@ -203,7 +203,7 @@ static int omap2_reprogram_dpll(struct clk *clk, unsigned long rate)
if (!dd) if (!dd)
goto dpll_exit; goto dpll_exit;
tmpset.cm_clksel1_pll = cm_read_reg(dd->mult_div1_reg); tmpset.cm_clksel1_pll = __raw_readl(dd->mult_div1_reg);
tmpset.cm_clksel1_pll &= ~(dd->mult_mask | tmpset.cm_clksel1_pll &= ~(dd->mult_mask |
dd->div1_mask); dd->div1_mask);
div = ((curr_prcm_set->xtal_speed / 1000000) - 1); div = ((curr_prcm_set->xtal_speed / 1000000) - 1);
...@@ -442,7 +442,7 @@ static u32 omap2_get_sysclkdiv(void) ...@@ -442,7 +442,7 @@ static u32 omap2_get_sysclkdiv(void)
{ {
u32 div; u32 div;
div = prm_read_reg(OMAP24XX_PRCM_CLKSRC_CTRL); div = __raw_readl(OMAP24XX_PRCM_CLKSRC_CTRL);
div &= OMAP_SYSCLKDIV_MASK; div &= OMAP_SYSCLKDIV_MASK;
div >>= OMAP_SYSCLKDIV_SHIFT; div >>= OMAP_SYSCLKDIV_SHIFT;
......
...@@ -82,7 +82,7 @@ static int _omap3_wait_dpll_status(struct clk *clk, u8 state) ...@@ -82,7 +82,7 @@ static int _omap3_wait_dpll_status(struct clk *clk, u8 state)
state <<= dd->idlest_bit; state <<= dd->idlest_bit;
idlest_mask = 1 << dd->idlest_bit; idlest_mask = 1 << dd->idlest_bit;
while (((cm_read_reg(dd->idlest_reg) & idlest_mask) != state) && while (((__raw_readl(dd->idlest_reg) & idlest_mask) != state) &&
i < MAX_DPLL_WAIT_TRIES) { i < MAX_DPLL_WAIT_TRIES) {
i++; i++;
udelay(1); udelay(1);
...@@ -285,7 +285,7 @@ static u32 omap3_dpll_autoidle_read(struct clk *clk) ...@@ -285,7 +285,7 @@ static u32 omap3_dpll_autoidle_read(struct clk *clk)
dd = clk->dpll_data; dd = clk->dpll_data;
v = cm_read_reg(dd->autoidle_reg); v = __raw_readl(dd->autoidle_reg);
v &= dd->autoidle_mask; v &= dd->autoidle_mask;
v >>= __ffs(dd->autoidle_mask); v >>= __ffs(dd->autoidle_mask);
...@@ -367,7 +367,7 @@ static void omap3_clkoutx2_recalc(struct clk *clk) ...@@ -367,7 +367,7 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
WARN_ON(!dd->control_reg || !dd->enable_mask); WARN_ON(!dd->control_reg || !dd->enable_mask);
v = cm_read_reg(dd->control_reg) & dd->enable_mask; v = __raw_readl(dd->control_reg) & dd->enable_mask;
v >>= __ffs(dd->enable_mask); v >>= __ffs(dd->enable_mask);
if (v != DPLL_LOCKED) if (v != DPLL_LOCKED)
clk->rate = clk->parent->rate; clk->rate = clk->parent->rate;
......
...@@ -43,29 +43,17 @@ ...@@ -43,29 +43,17 @@
#define OMAP3430_CM_CLKOUT_CTRL OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070) #define OMAP3430_CM_CLKOUT_CTRL OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070)
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__
/* Clock management global register get/set */
static void __attribute__((unused)) cm_write_reg(u32 val, void __iomem *addr)
{
pr_debug("cm_write_reg: writing 0x%0x to 0x%0x\n", val, (u32)addr);
__raw_writel(val, addr);
}
static u32 __attribute__((unused)) cm_read_reg(void __iomem *addr)
{
return __raw_readl(addr);
}
/* Read-modify-write bits in a CM register */ /* Read-modify-write bits in a CM register */
static u32 __attribute__((unused)) cm_rmw_reg_bits(u32 mask, u32 bits, void __iomem *va) static __inline__ u32 __attribute__((unused)) cm_rmw_reg_bits(u32 mask,
u32 bits, void __iomem *va)
{ {
u32 v; u32 v;
v = cm_read_reg(va); v = __raw_readl(va);
v &= ~mask; v &= ~mask;
v |= bits; v |= bits;
cm_write_reg(v, va); __raw_writel(v, va);
return v; return v;
} }
...@@ -128,29 +116,33 @@ static u32 __attribute__((unused)) cm_rmw_reg_bits(u32 mask, u32 bits, void __io ...@@ -128,29 +116,33 @@ static u32 __attribute__((unused)) cm_rmw_reg_bits(u32 mask, u32 bits, void __io
/* Clock management domain register get/set */ /* Clock management domain register get/set */
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__
static void __attribute__((unused)) cm_write_mod_reg(u32 val, s16 module, static __inline__ void __attribute__((unused)) cm_write_mod_reg(u32 val,
s16 idx) s16 module, s16 idx)
{ {
cm_write_reg(val, OMAP_CM_REGADDR(module, idx)); __raw_writel(val, OMAP_CM_REGADDR(module, idx));
} }
static u32 __attribute__((unused)) cm_read_mod_reg(s16 module, s16 idx) static __inline__ u32 __attribute__((unused)) cm_read_mod_reg(s16 module,
s16 idx)
{ {
return cm_read_reg(OMAP_CM_REGADDR(module, idx)); return __raw_readl(OMAP_CM_REGADDR(module, idx));
} }
/* Read-modify-write bits in a CM register (by domain) */ /* Read-modify-write bits in a CM register (by domain) */
static inline u32 __attribute__((unused)) cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx) static __inline__ u32 __attribute__((unused)) cm_rmw_mod_reg_bits(u32 mask,
u32 bits, s16 module, s16 idx)
{ {
return cm_rmw_reg_bits(mask, bits, OMAP_CM_REGADDR(module, idx)); return cm_rmw_reg_bits(mask, bits, OMAP_CM_REGADDR(module, idx));
} }
static inline u32 __attribute__((unused)) cm_set_mod_reg_bits(u32 bits, s16 module, s16 idx) static __inline__ u32 __attribute__((unused)) cm_set_mod_reg_bits(u32 bits,
s16 module, s16 idx)
{ {
return cm_rmw_mod_reg_bits(bits, bits, module, idx); return cm_rmw_mod_reg_bits(bits, bits, module, idx);
} }
static inline u32 __attribute__((unused)) cm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx) static __inline__ u32 __attribute__((unused)) cm_clear_mod_reg_bits(u32 bits,
s16 module, s16 idx)
{ {
return cm_rmw_mod_reg_bits(bits, 0x0, module, idx); return cm_rmw_mod_reg_bits(bits, 0x0, module, idx);
} }
......
...@@ -93,7 +93,7 @@ u32 omap2_reprogram_sdrc(u32 level, u32 force) ...@@ -93,7 +93,7 @@ u32 omap2_reprogram_sdrc(u32 level, u32 force)
m_type = omap2_memory_get_type(); m_type = omap2_memory_get_type();
local_irq_save(flags); local_irq_save(flags);
prm_write_reg(0xffff, OMAP24XX_PRCM_VOLTSETUP); __raw_writel(0xffff, OMAP24XX_PRCM_VOLTSETUP);
omap2_sram_reprogram_sdrc(level, dll_ctrl, m_type); omap2_sram_reprogram_sdrc(level, dll_ctrl, m_type);
curr_perf_level = level; curr_perf_level = level;
local_irq_restore(flags); local_irq_restore(flags);
......
...@@ -203,10 +203,10 @@ static void pm_init_serial_console(void) ...@@ -203,10 +203,10 @@ static void pm_init_serial_console(void)
regs[reg_count++].val = cm_read_mod_reg(mod, reg) regs[reg_count++].val = cm_read_mod_reg(mod, reg)
#define DUMP_PRM_REG(reg) \ #define DUMP_PRM_REG(reg) \
regs[reg_count].name = #reg; \ regs[reg_count].name = #reg; \
regs[reg_count++].val = prm_read_reg(reg) regs[reg_count++].val = __raw_readl(reg)
#define DUMP_CM_REG(reg) \ #define DUMP_CM_REG(reg) \
regs[reg_count].name = #reg; \ regs[reg_count].name = #reg; \
regs[reg_count++].val = cm_read_reg(reg) regs[reg_count++].val = __raw_readl(reg)
#define DUMP_INTC_REG(reg, off) \ #define DUMP_INTC_REG(reg, off) \
regs[reg_count].name = #reg; \ regs[reg_count].name = #reg; \
regs[reg_count++].val = __raw_readl(IO_ADDRESS(0x480fe000 + (off))) regs[reg_count++].val = __raw_readl(IO_ADDRESS(0x480fe000 + (off)))
...@@ -442,14 +442,14 @@ no_sleep: ...@@ -442,14 +442,14 @@ no_sleep:
prm_clear_mod_reg_bits(0x4 | 0x1, WKUP_MOD, PM_WKST); prm_clear_mod_reg_bits(0x4 | 0x1, WKUP_MOD, PM_WKST);
/* MPU domain wake events */ /* MPU domain wake events */
l = prm_read_reg(OMAP24XX_PRCM_IRQSTATUS_MPU); l = __raw_readl(OMAP24XX_PRCM_IRQSTATUS_MPU);
if (l & 0x01) if (l & 0x01)
prm_write_reg(0x01, OMAP24XX_PRCM_IRQSTATUS_MPU); __raw_writel(0x01, OMAP24XX_PRCM_IRQSTATUS_MPU);
if (l & 0x20) if (l & 0x20)
prm_write_reg(0x20, OMAP24XX_PRCM_IRQSTATUS_MPU); __raw_writel(0x20, OMAP24XX_PRCM_IRQSTATUS_MPU);
/* Mask future PRCM-to-MPU interrupts */ /* Mask future PRCM-to-MPU interrupts */
prm_write_reg(0x0, OMAP24XX_PRCM_IRQSTATUS_MPU); __raw_writel(0x0, OMAP24XX_PRCM_IRQSTATUS_MPU);
} }
static int omap2_i2c_active(void) static int omap2_i2c_active(void)
...@@ -648,7 +648,7 @@ static void __init prcm_setup_regs(void) ...@@ -648,7 +648,7 @@ static void __init prcm_setup_regs(void)
u32 l; u32 l;
/* Enable autoidle */ /* Enable autoidle */
prm_write_reg(OMAP24XX_AUTOIDLE, OMAP24XX_PRCM_SYSCONFIG); __raw_writel(OMAP24XX_AUTOIDLE, OMAP24XX_PRCM_SYSCONFIG);
/* Set all domain wakeup dependencies */ /* Set all domain wakeup dependencies */
prm_write_mod_reg(OMAP_EN_WKUP, MPU_MOD, PM_WKDEP); prm_write_mod_reg(OMAP_EN_WKUP, MPU_MOD, PM_WKDEP);
...@@ -752,11 +752,11 @@ static void __init prcm_setup_regs(void) ...@@ -752,11 +752,11 @@ static void __init prcm_setup_regs(void)
/* REVISIT: Configure number of 32 kHz clock cycles for sys_clk /* REVISIT: Configure number of 32 kHz clock cycles for sys_clk
* stabilisation */ * stabilisation */
prm_write_reg(15 << OMAP_SETUP_TIME_SHIFT, OMAP24XX_PRCM_CLKSSETUP); __raw_writel(15 << OMAP_SETUP_TIME_SHIFT, OMAP24XX_PRCM_CLKSSETUP);
/* Configure automatic voltage transition */ /* Configure automatic voltage transition */
prm_write_reg(2 << OMAP_SETUP_TIME_SHIFT, OMAP24XX_PRCM_VOLTSETUP); __raw_writel(2 << OMAP_SETUP_TIME_SHIFT, OMAP24XX_PRCM_VOLTSETUP);
prm_write_reg(OMAP24XX_AUTO_EXTVOLT | __raw_writel(OMAP24XX_AUTO_EXTVOLT |
(0x1 << OMAP24XX_SETOFF_LEVEL_SHIFT) | (0x1 << OMAP24XX_SETOFF_LEVEL_SHIFT) |
OMAP24XX_MEMRETCTRL | OMAP24XX_MEMRETCTRL |
(0x1 << OMAP24XX_SETRET_LEVEL_SHIFT) | (0x1 << OMAP24XX_SETRET_LEVEL_SHIFT) |
...@@ -774,7 +774,7 @@ int __init omap2_pm_init(void) ...@@ -774,7 +774,7 @@ int __init omap2_pm_init(void)
int error; int error;
printk(KERN_INFO "Power Management for OMAP2 initializing\n"); printk(KERN_INFO "Power Management for OMAP2 initializing\n");
l = prm_read_reg(OMAP24XX_PRCM_REVISION); l = __raw_readl(OMAP24XX_PRCM_REVISION);
printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f);
osc_ck = clk_get(NULL, "osc_ck"); osc_ck = clk_get(NULL, "osc_ck");
......
...@@ -101,29 +101,16 @@ ...@@ -101,29 +101,16 @@
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__
/* Power/reset management global register get/set */
static void __attribute__((unused)) prm_write_reg(u32 val, void __iomem *addr)
{
pr_debug("prm_write_reg: writing 0x%0x to 0x%0x\n", val, (u32)addr);
__raw_writel(val, addr);
}
static u32 __attribute__((unused)) prm_read_reg(void __iomem *addr)
{
return __raw_readl(addr);
}
/* Read-modify-write bits in a PRM register */ /* Read-modify-write bits in a PRM register */
static u32 __attribute__((unused)) prm_rmw_reg_bits(u32 mask, u32 bits, void __iomem *va) static __inline__ u32 __attribute__((unused)) prm_rmw_reg_bits(u32 mask,
u32 bits, void __iomem *va)
{ {
u32 v; u32 v;
v = prm_read_reg(va); v = __raw_readl(va);
v &= ~mask; v &= ~mask;
v |= bits; v |= bits;
prm_write_reg(v, va); __raw_writel(v, va);
return v; return v;
} }
...@@ -200,14 +187,16 @@ static u32 __attribute__((unused)) prm_clear_mod_reg_bits(u32 bits, s16 module, ...@@ -200,14 +187,16 @@ static u32 __attribute__((unused)) prm_clear_mod_reg_bits(u32 bits, s16 module,
/* Power/reset management domain register get/set */ /* Power/reset management domain register get/set */
static void __attribute__((unused)) prm_write_mod_reg(u32 val, s16 module, s16 idx) static __inline__ void __attribute__((unused)) prm_write_mod_reg(u32 val,
s16 module, s16 idx)
{ {
prm_write_reg(val, OMAP_PRM_REGADDR(module, idx)); __raw_writel(val, OMAP_PRM_REGADDR(module, idx));
} }
static u32 __attribute__((unused)) prm_read_mod_reg(s16 module, s16 idx) static __inline__ u32 __attribute__((unused)) prm_read_mod_reg(s16 module,
s16 idx)
{ {
return prm_read_reg(OMAP_PRM_REGADDR(module, idx)); return __raw_readl(OMAP_PRM_REGADDR(module, idx));
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment