diff options
Diffstat (limited to 'arch/m68k/mac/macints.c')
-rw-r--r-- | arch/m68k/mac/macints.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c index 41dd164aac2..74f5a97c986 100644 --- a/arch/m68k/mac/macints.c +++ b/arch/m68k/mac/macints.c @@ -151,10 +151,15 @@ irqreturn_t mac_debug_handler(int, void *); /* #define DEBUG_MACINTS */ +static unsigned int mac_irq_startup(struct irq_data *); +static void mac_irq_shutdown(struct irq_data *); + static struct irq_chip mac_irq_chip = { .name = "mac", .irq_enable = mac_irq_enable, .irq_disable = mac_irq_disable, + .irq_startup = mac_irq_startup, + .irq_shutdown = mac_irq_shutdown, }; void __init mac_init_IRQ(void) @@ -274,6 +279,28 @@ void mac_irq_disable(struct irq_data *data) } } +static unsigned int mac_irq_startup(struct irq_data *data) +{ + int irq = data->irq; + + if (IRQ_SRC(irq) == 7 && !oss_present) + via_nubus_irq_startup(irq); + else + mac_irq_enable(data); + + return 0; +} + +static void mac_irq_shutdown(struct irq_data *data) +{ + int irq = data->irq; + + if (IRQ_SRC(irq) == 7 && !oss_present) + via_nubus_irq_shutdown(irq); + else + mac_irq_disable(data); +} + static int num_debug[8]; irqreturn_t mac_debug_handler(int irq, void *dev_id) |