From: Jagadeesh Bhaskar Pakaravoor <j-pakaravoor@xxxxxx> RTC generates an extra spurious interrupt for every actual periodic interrupt. This is due to a problem with the RTC_IT bit of REG_PWR_ISR1. It requires two writes or two reads (when COR is enabled) to clear it. Since COR is enabled and one read of the same register is done already (inside twl4030-pwrirq.c do_twl4030_pwrirq() function), we can do away with a need to add one more write into the same register inside the interrupt handler, by replacing the write currently present with just one extra read. Signed-off-by: Jagadeesh Bhaskar Pakaravoor <j-pakaravoor@xxxxxx> --- David Brownell reported this issue earlier. This patch fixes it. Index: linux-omap-2.6/drivers/rtc/rtc-twl4030.c =================================================================== --- linux-omap-2.6.orig/drivers/rtc/rtc-twl4030.c 2008-09-05 12:22:23.089855991 +0530 +++ linux-omap-2.6/drivers/rtc/rtc-twl4030.c 2008-09-05 12:49:55.634939761 +0530 @@ -446,8 +446,13 @@ static irqreturn_t twl4030_rtc_interrupt REG_RTC_STATUS_REG); if (res) goto out; - res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, - PWR_RTC_INT_CLR, REG_PWR_ISR1); + + /* Clear on Read enabled. RTC_IT bit of REG_PWR_ISR1 needs + * 2 reads to clear the interrupt. One read is done in + * do_twl4030_pwrirq(). Doing the second read, to clear + * the bit. + */ + res = twl4030_i2c_read_u8(TWL4030_MODULE_INT, &rd_reg, REG_PWR_ISR1); if (res) goto out; -- With Regards, Jagadeesh Bhaskar P ---------------------------- Some men see things as they are and say why - I dream things that never were and say why not. - George Bernard Shaw ------------------- -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html