Commit 246f93f5 authored by Jeff Garzik's avatar Jeff Garzik

isdn/act2000: fix major bug. clean irq handler.

* invert sense of request_irq() test.  otherwise we will always fail,
  when IRQ is available.

* no need to use 'irq' function arg, its stored in a data struct already
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent d12341f9
...@@ -61,7 +61,7 @@ act2000_isa_detect(unsigned short portbase) ...@@ -61,7 +61,7 @@ act2000_isa_detect(unsigned short portbase)
} }
static irqreturn_t static irqreturn_t
act2000_isa_interrupt(int irq, void *dev_id) act2000_isa_interrupt(int dummy, void *dev_id)
{ {
act2000_card *card = dev_id; act2000_card *card = dev_id;
u_char istatus; u_char istatus;
...@@ -80,7 +80,7 @@ act2000_isa_interrupt(int irq, void *dev_id) ...@@ -80,7 +80,7 @@ act2000_isa_interrupt(int irq, void *dev_id)
printk(KERN_WARNING "act2000: errIRQ\n"); printk(KERN_WARNING "act2000: errIRQ\n");
} }
if (istatus) 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; return IRQ_HANDLED;
} }
...@@ -131,6 +131,8 @@ act2000_isa_enable_irq(act2000_card * card) ...@@ -131,6 +131,8 @@ act2000_isa_enable_irq(act2000_card * card)
int int
act2000_isa_config_irq(act2000_card * card, short irq) act2000_isa_config_irq(act2000_card * card, short irq)
{ {
int old_irq;
if (card->flags & ACT2000_FLAGS_IVALID) { if (card->flags & ACT2000_FLAGS_IVALID) {
free_irq(card->irq, card); free_irq(card->irq, card);
} }
...@@ -139,8 +141,10 @@ act2000_isa_config_irq(act2000_card * card, short irq) ...@@ -139,8 +141,10 @@ act2000_isa_config_irq(act2000_card * card, short irq)
if (!irq) if (!irq)
return 0; return 0;
if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) { old_irq = card->irq;
card->irq = irq; card->irq = irq;
if (request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
card->irq = old_irq;
card->flags |= ACT2000_FLAGS_IVALID; card->flags |= ACT2000_FLAGS_IVALID;
printk(KERN_WARNING printk(KERN_WARNING
"act2000: Could not request irq %d\n",irq); "act2000: Could not request irq %d\n",irq);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment