summary refs log tree commit diff
path: root/drivers
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-11-27 07:17:41 +1100
committerSamuel Ortiz <sameo@linux.intel.com>2011-12-20 18:53:25 +0100
commit286f8f3cd615177d5d0f8af8059a3fa39f51fa97 (patch)
tree13420240fc5b4a9acb78272e328f5653daab30a5 /drivers
parent8f6a459a9daa6ce76d7c192f2cb3047fffb45ec8 (diff)
downloadlinux-286f8f3cd615177d5d0f8af8059a3fa39f51fa97.tar.gz
mfd: Base interrupt for twl4030-irq must be one-shot
As the interrupt source is only cleared by the threaded interrupt
service routine, we need to make the base interrupt IRQF_ONESHOT.
Without this, the first interrupt from the TWL4030 cause the CPU to
enter an infinite loop trying to handle to interrupt but never
clearing it.

Signed-off-by: NeilBrown <neilb@suse.de>
Tested-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mfd/twl4030-irq.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
index f062c8cc6c38..3d3d6ed48f8d 100644
--- a/drivers/mfd/twl4030-irq.c
+++ b/drivers/mfd/twl4030-irq.c
@@ -733,8 +733,9 @@ int twl4030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end)
 	}
 
 	/* install an irq handler to demultiplex the TWL4030 interrupt */
-	status = request_threaded_irq(irq_num, NULL, handle_twl4030_pih, 0,
-					"TWL4030-PIH", NULL);
+	status = request_threaded_irq(irq_num, NULL, handle_twl4030_pih,
+				      IRQF_ONESHOT,
+				      "TWL4030-PIH", NULL);
 	if (status < 0) {
 		pr_err("twl4030: could not claim irq%d: %d\n", irq_num, status);
 		goto fail_rqirq;