aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/prcmu-fw.c
diff options
context:
space:
mode:
authorKumar Sanghvi <kumar.sanghvi@stericsson.com>2010-06-04 11:15:09 +0530
committerJohn Rigby <john.rigby@linaro.org>2010-09-02 22:45:33 -0600
commit3e1df2aea392511d4cf1622e3541d818d79a5596 (patch)
tree6736e1fa8f610128d57dbf302375540ed3720a39 /arch/arm/mach-ux500/prcmu-fw.c
parentdfa3afebccdbc64876afd2339ee96beb0985961e (diff)
downloadlinux-2.6.34-ux500-3e1df2aea392511d4cf1622e3541d818d79a5596.tar.gz
u8500-prcmu: Process AckMb7 IRQ first before any other IRQ
With DV6 and SHRM V1 updates, due to delay in processing of AckMb7 IRQ, occassional hangs are observed. Correct this by processing the AckMb7 IRQ first before any other AckMb IRQ ST-Ericsson ID: ER262914 Signed-off-by: Kumar Sanghvi <kumar.sanghvi@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/796 Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Change-Id: I9d4745b06ad2fd1e62821d46d08c82a98cc2b996 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/2395
Diffstat (limited to 'arch/arm/mach-ux500/prcmu-fw.c')
-rwxr-xr-xarch/arm/mach-ux500/prcmu-fw.c17
1 files changed, 9 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;
}