summaryrefslogtreecommitdiff
path: root/drivers/mfd/max77686-irq.c
diff options
context:
space:
mode:
authorYadwinder Singh Brar <yadi.brar01@gmail.com>2012-07-05 07:58:21 +0400
committerSamuel Ortiz <sameo@linux.intel.com>2012-07-09 17:13:42 +0400
commit9bdf9b4ec7c8b707cd0d9109d576c4eb69cd84bb (patch)
tree03fb53bc9e0d81d0be0b1ed761fed6b4258cbd06 /drivers/mfd/max77686-irq.c
parent84d70ee78bb0c3d8d1d8df74565d010e2e3c31a9 (diff)
downloadlinux-9bdf9b4ec7c8b707cd0d9109d576c4eb69cd84bb.tar.xz
mfd: Apply irq_mask_cur before handling max77686 interrupts
According to TRM, though we mask the interrupts in interrupt-mask register, interrupt source-register still provide the status of the masked interrupts. So we should apply irq_mask_cur to read interrupt source-register value before handling. Signed-off-by: Yadwinder Singh Brar <yadi.brar@samsung.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/max77686-irq.c')
-rw-r--r--drivers/mfd/max77686-irq.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mfd/max77686-irq.c b/drivers/mfd/max77686-irq.c
index 09e593ad07b5..0758fac0c447 100644
--- a/drivers/mfd/max77686-irq.c
+++ b/drivers/mfd/max77686-irq.c
@@ -208,6 +208,9 @@ static irqreturn_t max77686_irq_thread(int irq, void *data)
}
+ for (i = 0; i < MAX77686_IRQ_GROUP_NR; i++)
+ irq_reg[i] &= ~max77686->irq_masks_cur[i];
+
for (i = 0; i < MAX77686_IRQ_NR; i++) {
if (irq_reg[max77686_irqs[i].group] & max77686_irqs[i].mask) {
cur_irq = irq_find_mapping(max77686->irq_domain, i);