Commit 286f8f3c authored by NeilBrown's avatar NeilBrown Committed by Samuel Ortiz

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: default avatarNeilBrown <neilb@suse.de>
Tested-by: default avatarFelipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 8f6a459a
...@@ -733,8 +733,9 @@ int twl4030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end) ...@@ -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 */ /* install an irq handler to demultiplex the TWL4030 interrupt */
status = request_threaded_irq(irq_num, NULL, handle_twl4030_pih, 0, status = request_threaded_irq(irq_num, NULL, handle_twl4030_pih,
"TWL4030-PIH", NULL); IRQF_ONESHOT,
"TWL4030-PIH", NULL);
if (status < 0) { if (status < 0) {
pr_err("twl4030: could not claim irq%d: %d\n", irq_num, status); pr_err("twl4030: could not claim irq%d: %d\n", irq_num, status);
goto fail_rqirq; goto fail_rqirq;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment