diff options
Diffstat (limited to 'arch/arm/mach-ux500')
-rwxr-xr-x | arch/arm/mach-ux500/prcmu-fw.c | 17 | ||||
-rwxr-xr-x | arch/arm/mach-ux500/prcmu-fw_v1.h | 3 |
2 files changed, 12 insertions, 8 deletions
diff --git a/arch/arm/mach-ux500/prcmu-fw.c b/arch/arm/mach-ux500/prcmu-fw.c index 7117bd29f4e..728782c8600 100755 --- a/arch/arm/mach-ux500/prcmu-fw.c +++ b/arch/arm/mach-ux500/prcmu-fw.c @@ -1498,7 +1498,15 @@ irqreturn_t prcmu_ack_mbox_irq_handler(int irq, void *ctrlr) dbg_printk(" prcm_arm_it1_val = %x ", prcm_arm_it1_val); - if (prcm_arm_it1_val & (1 << 0)) { + if (prcm_arm_it1_val & (PRCM_IRQ_ACK_MBOX7)) { + /* No header reading required */ + dbg_printk("\n IRQ handler for Ack mb7\n"); + tasklet_schedule(&prcmu_ack_mb7_tasklet); + + /* clear the bit 7 */ + writeb(PRCM_IRQ_ACK_MBOX7, PRCM_ARM_IT1_CLEAR); + + } else if (prcm_arm_it1_val & (PRCM_IRQ_ACK_MBOX0)) { dbg_printk("\n Inside IRQ handler for Ack mb0 "); wake_up_interruptible(&ack_mb0_queue); @@ -1557,13 +1565,6 @@ irqreturn_t prcmu_ack_mbox_irq_handler(int irq, void *ctrlr) /* clear the bit 6 */ writeb(0x40, PRCM_ARM_IT1_CLEAR); - } else if (prcm_arm_it1_val & (1<<7)) { - /* No header reading required */ - dbg_printk("\n IRQ handler for Ack mb7\n"); - tasklet_schedule(&prcmu_ack_mb7_tasklet); - - /* clear the bit 7 */ - writeb(0x80, PRCM_ARM_IT1_CLEAR); } return IRQ_HANDLED; } diff --git a/arch/arm/mach-ux500/prcmu-fw_v1.h b/arch/arm/mach-ux500/prcmu-fw_v1.h index 6a88295fa42..3bdea06aace 100755 --- a/arch/arm/mach-ux500/prcmu-fw_v1.h +++ b/arch/arm/mach-ux500/prcmu-fw_v1.h @@ -148,6 +148,9 @@ #define PRCM_ACK_MB5_SLAVE (PRCM_ACK_MB5 + 0x2) #define PRCM_ACK_MB5_VAL (PRCM_ACK_MB5 + 0x3) +#define PRCM_IRQ_ACK_MBOX0 (1 << 0) +#define PRCM_IRQ_ACK_MBOX7 (1 << 7) + #define LOW_POWER_WAKEUP 1 #define EXE_WAKEUP 0 |