Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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)) {
	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);