mfd: twl4030 irq fixes
authorRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 27 Jul 2009 06:00:48 +0000 (11:30 +0530)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 4 Aug 2009 18:31:32 +0000 (20:31 +0200)
commit1cef8e41073efe47e809f49670eb461307e52ccc
treeaa598b771302e24450d87e5c83e5183627f49cb0
parenta33a052f19a21d727847391c8c1aff3fb221c472
mfd: twl4030 irq fixes

The TWL4030 IRQ handler has a bug which leads to spinlock lock-up. It is
calling the 'unmask' function in a process context. :The mask/unmask/ack
functions are only designed to be called from the IRQ handler code,
or the proper API interfaces found in linux/interrupt.h.

Also there is no need to have IRQ chaining mechanism. The right way to
handle this is to claim the parent interrupt as a standard interrupt
and arrange for handle_twl4030_pih to take care of the rest of the devices.

Mail thread on this issue can be found at:
http://marc.info/?l=linux-arm-kernel&m=124629940123396&w=2

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/twl4030-irq.c