diff options
-rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index ea0000bc5358..a15aa92d384e 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -267,13 +267,16 @@ static int _prcm_int_handle_wakeup(void) | |||
267 | */ | 267 | */ |
268 | static irqreturn_t prcm_interrupt_handler (int irq, void *dev_id) | 268 | static irqreturn_t prcm_interrupt_handler (int irq, void *dev_id) |
269 | { | 269 | { |
270 | u32 irqstatus_mpu; | 270 | u32 irqenable_mpu, irqstatus_mpu; |
271 | int c = 0; | 271 | int c = 0; |
272 | 272 | ||
273 | do { | 273 | irqenable_mpu = prm_read_mod_reg(OCP_MOD, |
274 | irqstatus_mpu = prm_read_mod_reg(OCP_MOD, | 274 | OMAP3_PRM_IRQENABLE_MPU_OFFSET); |
275 | OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | 275 | irqstatus_mpu = prm_read_mod_reg(OCP_MOD, |
276 | OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | ||
277 | irqstatus_mpu &= irqenable_mpu; | ||
276 | 278 | ||
279 | do { | ||
277 | if (irqstatus_mpu & (OMAP3430_WKUP_ST | OMAP3430_IO_ST)) { | 280 | if (irqstatus_mpu & (OMAP3430_WKUP_ST | OMAP3430_IO_ST)) { |
278 | c = _prcm_int_handle_wakeup(); | 281 | c = _prcm_int_handle_wakeup(); |
279 | 282 | ||
@@ -292,7 +295,11 @@ static irqreturn_t prcm_interrupt_handler (int irq, void *dev_id) | |||
292 | prm_write_mod_reg(irqstatus_mpu, OCP_MOD, | 295 | prm_write_mod_reg(irqstatus_mpu, OCP_MOD, |
293 | OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | 296 | OMAP3_PRM_IRQSTATUS_MPU_OFFSET); |
294 | 297 | ||
295 | } while (prm_read_mod_reg(OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET)); | 298 | irqstatus_mpu = prm_read_mod_reg(OCP_MOD, |
299 | OMAP3_PRM_IRQSTATUS_MPU_OFFSET); | ||
300 | irqstatus_mpu &= irqenable_mpu; | ||
301 | |||
302 | } while (irqstatus_mpu); | ||
296 | 303 | ||
297 | return IRQ_HANDLED; | 304 | return IRQ_HANDLED; |
298 | } | 305 | } |