Bugfixes for external irq handler set_irq_type():
- If set_irq_type() can't set the type, don't change anything!
- It's not OK to change the flow handler as part of set_irq_type(),
among other issues that violates spinlock rules. Instead, we can
call the relevant handler when we demux the external interrupts.
- The external irq demux has no need to grab the spinlock. And in
fact grabbing it that way was wrong, since that code might be
pre-empted by an irq at a different priority level, and that code
might then have tried to grab that spinlock...
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>