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: Jeff Garzik <jgarzik@redhat.com>

+8 -4
+8 -4
drivers/isdn/act2000/act2000_isa.c
··· 61 61 } 62 62 63 63 static irqreturn_t 64 - act2000_isa_interrupt(int irq, void *dev_id) 64 + act2000_isa_interrupt(int dummy, void *dev_id) 65 65 { 66 66 act2000_card *card = dev_id; 67 67 u_char istatus; ··· 80 80 printk(KERN_WARNING "act2000: errIRQ\n"); 81 81 } 82 82 if (istatus) 83 - printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", irq, istatus); 83 + printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", card->irq, istatus); 84 84 return IRQ_HANDLED; 85 85 } 86 86 ··· 131 131 int 132 132 act2000_isa_config_irq(act2000_card * card, short irq) 133 133 { 134 + int old_irq; 135 + 134 136 if (card->flags & ACT2000_FLAGS_IVALID) { 135 137 free_irq(card->irq, card); 136 138 } ··· 141 139 if (!irq) 142 140 return 0; 143 141 144 - if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) { 145 - card->irq = irq; 142 + old_irq = card->irq; 143 + card->irq = irq; 144 + if (request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) { 145 + card->irq = old_irq; 146 146 card->flags |= ACT2000_FLAGS_IVALID; 147 147 printk(KERN_WARNING 148 148 "act2000: Could not request irq %d\n",irq);