--- zzzz-none-000/linux-2.6.19.2/arch/arm/plat-omap/timer32k.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/arch/arm/plat-omap/timer32k.c 2007-01-11 07:38:19.000000000 +0000 @@ -219,6 +219,17 @@ static irqreturn_t omap_32k_timer_handler(int irq, void *dev_id) { + unsigned long now; + + now = omap_32k_sync_timer_read(); + + /* Don't bother reprogramming timer if last tick was before next + * jiffie. We will get another interrupt when previously programmed + * timer expires. This cuts down interrupt load quite a bit. + */ + if (now - omap_32k_last_tick < OMAP_32K_TICKS_PER_HZ) + return IRQ_HANDLED; + return _omap_32k_timer_interrupt(irq, dev_id); }