[AVR32] ext int fixes
authorDavid Brownell <david-b@pacbell.net>
Wed, 24 Jan 2007 04:21:36 +0000 (20:21 -0800)
committerHaavard Skinnemoen <hskinnemoen@atmel.com>
Fri, 9 Feb 2007 14:01:57 +0000 (15:01 +0100)
commit58febc0b1374de7506277d3aa9e9cddaea62ba65
treead9774f80d34d33e8cf125eeb92b4ca66d1c40eb
parenta3d912c8fa709c4078ceaabf4d71001190e19325
[AVR32] ext int fixes

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>
arch/avr32/mach-at32ap/extint.c