diff options
Diffstat (limited to 'arch/m68k/mac/baboon.c')
-rw-r--r-- | arch/m68k/mac/baboon.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c index c7ea6475ef9b..a7d280220662 100644 --- a/arch/m68k/mac/baboon.c +++ b/arch/m68k/mac/baboon.c @@ -18,10 +18,6 @@ int baboon_present; static volatile struct baboon *baboon; -#if 0 -extern int macide_ack_intr(struct ata_channel *); -#endif - /* * Baboon initialization. */ @@ -41,33 +37,26 @@ void __init baboon_init(void) } /* - * Baboon interrupt handler. This works a lot like a VIA. + * Baboon interrupt handler. + * XXX how do you clear a pending IRQ? is it even necessary? */ static void baboon_irq(struct irq_desc *desc) { - int irq_bit, irq_num; - unsigned char events; + short events, irq_bit; + int irq_num; events = baboon->mb_ifr & 0x07; - if (!events) - return; - irq_num = IRQ_BABOON_0; irq_bit = 1; do { - if (events & irq_bit) { - baboon->mb_ifr &= ~irq_bit; + if (events & irq_bit) { + events &= ~irq_bit; generic_handle_irq(irq_num); } + ++irq_num; irq_bit <<= 1; - irq_num++; - } while(events >= irq_bit); -#if 0 - if (baboon->mb_ifr & 0x02) macide_ack_intr(NULL); - /* for now we need to smash all interrupts */ - baboon->mb_ifr &= ~events; -#endif + } while (events); } /* |