ARM: OMAP: Don't restore DMTIMER interrupt status register
authorJon Hunter <jon-hunter@ti.com>
Thu, 4 Oct 2012 22:01:14 +0000 (17:01 -0500)
committerJon Hunter <jon-hunter@ti.com>
Mon, 12 Nov 2012 22:23:54 +0000 (16:23 -0600)
Restoring the timer interrupt status is not possible because writing a 1 to any
bit in the register clears that bit if set and writing a 0 has no affect.
Furthermore, if an interrupt is pending when someone attempts to disable a
timer, the timer will fail to transition to the idle state and hence it's
context will not be lost. Users should take care to service all interrupts
before disabling the timer.

Signed-off-by: Jon Hunter <jon-hunter@ti.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
arch/arm/plat-omap/dmtimer.c
arch/arm/plat-omap/include/plat/dmtimer.h

index 320d103817151cb2965d3a3e77fc25ea51f292a7..f0a3c4c72a420a501834b89d1ef85fa75ff8c508 100644 (file)
@@ -83,7 +83,6 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer *timer, u32 reg,
 
 static void omap_timer_restore_context(struct omap_dm_timer *timer)
 {
-       __raw_writel(timer->context.tisr, timer->irq_stat);
        omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG,
                                timer->context.twer);
        omap_dm_timer_write_reg(timer, OMAP_TIMER_COUNTER_REG,
@@ -440,7 +439,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
         */
        timer->context.tclr =
                        omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
-       timer->context.tisr = __raw_readl(timer->irq_stat);
        omap_dm_timer_disable(timer);
        return 0;
 }
@@ -684,8 +682,7 @@ int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value)
                return -EINVAL;
 
        __omap_dm_timer_write_status(timer, value);
-       /* Save the context */
-       timer->context.tisr = value;
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(omap_dm_timer_write_status);
index 2f9fd1d27aef088e58896824c933df81873d333b..0c07e375347000e9de369d7a8b4d4c774891acbe 100644 (file)
@@ -84,7 +84,6 @@ struct omap_dm_timer;
 
 struct timer_regs {
        u32 tidr;
-       u32 tisr;
        u32 tier;
        u32 twer;
        u32 tclr;