|
@@ -61,7 +61,7 @@ act2000_isa_detect(unsigned short portbase)
|
|
|
}
|
|
|
|
|
|
static irqreturn_t
|
|
|
-act2000_isa_interrupt(int irq, void *dev_id)
|
|
|
+act2000_isa_interrupt(int dummy, void *dev_id)
|
|
|
{
|
|
|
act2000_card *card = dev_id;
|
|
|
u_char istatus;
|
|
@@ -80,7 +80,7 @@ act2000_isa_interrupt(int irq, void *dev_id)
|
|
|
printk(KERN_WARNING "act2000: errIRQ\n");
|
|
|
}
|
|
|
if (istatus)
|
|
|
- printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", irq, istatus);
|
|
|
+ printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", card->irq, istatus);
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
|
|
|
@@ -131,6 +131,8 @@ act2000_isa_enable_irq(act2000_card * card)
|
|
|
int
|
|
|
act2000_isa_config_irq(act2000_card * card, short irq)
|
|
|
{
|
|
|
+ int old_irq;
|
|
|
+
|
|
|
if (card->flags & ACT2000_FLAGS_IVALID) {
|
|
|
free_irq(card->irq, card);
|
|
|
}
|
|
@@ -139,8 +141,10 @@ act2000_isa_config_irq(act2000_card * card, short irq)
|
|
|
if (!irq)
|
|
|
return 0;
|
|
|
|
|
|
- if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
|
|
|
- card->irq = irq;
|
|
|
+ old_irq = card->irq;
|
|
|
+ card->irq = irq;
|
|
|
+ if (request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
|
|
|
+ card->irq = old_irq;
|
|
|
card->flags |= ACT2000_FLAGS_IVALID;
|
|
|
printk(KERN_WARNING
|
|
|
"act2000: Could not request irq %d\n",irq);
|