summaryrefslogtreecommitdiff
path: root/arch/m68k/mac/baboon.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m68k/mac/baboon.c')
-rw-r--r--arch/m68k/mac/baboon.c48
1 files changed, 12 insertions, 36 deletions
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 3fe0e43d44f6..5c97a7058bcd 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
/*
* Baboon Custom IC Management
*
@@ -14,15 +15,11 @@
#include <asm/macints.h>
#include <asm/mac_baboon.h>
-/* #define DEBUG_IRQS */
+#include "mac.h"
int baboon_present;
static volatile struct baboon *baboon;
-#if 0
-extern int macide_ack_intr(struct ata_channel *);
-#endif
-
/*
* Baboon initialization.
*/
@@ -38,43 +35,30 @@ void __init baboon_init(void)
baboon = (struct baboon *) BABOON_BASE;
baboon_present = 1;
- printk("Baboon detected at %p\n", baboon);
+ pr_debug("Baboon detected at %p\n", baboon);
}
/*
- * 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(unsigned int irq, struct irq_desc *desc)
+static void baboon_irq(struct irq_desc *desc)
{
- int irq_bit, irq_num;
- unsigned char events;
-
-#ifdef DEBUG_IRQS
- printk("baboon_irq: mb_control %02X mb_ifr %02X mb_status %02X\n",
- (uint) baboon->mb_control, (uint) baboon->mb_ifr,
- (uint) baboon->mb_status);
-#endif
+ 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);
}
/*
@@ -97,18 +81,10 @@ void __init baboon_register_interrupts(void)
void baboon_irq_enable(int irq)
{
-#ifdef DEBUG_IRQUSE
- printk("baboon_irq_enable(%d)\n", irq);
-#endif
-
mac_irq_enable(irq_get_irq_data(IRQ_NUBUS_C));
}
void baboon_irq_disable(int irq)
{
-#ifdef DEBUG_IRQUSE
- printk("baboon_irq_disable(%d)\n", irq);
-#endif
-
mac_irq_disable(irq_get_irq_data(IRQ_NUBUS_C));
}