diff options
| -rw-r--r-- | drivers/isdn/act2000/act2000_isa.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/isdn/act2000/act2000_isa.c b/drivers/isdn/act2000/act2000_isa.c index 819ea85576a3..1bd8960ead33 100644 --- a/drivers/isdn/act2000/act2000_isa.c +++ b/drivers/isdn/act2000/act2000_isa.c | |||
| @@ -61,7 +61,7 @@ act2000_isa_detect(unsigned short portbase) | |||
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | static irqreturn_t | 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 | act2000_card *card = dev_id; | 66 | act2000_card *card = dev_id; |
| 67 | u_char istatus; | 67 | u_char istatus; |
| @@ -80,7 +80,7 @@ act2000_isa_interrupt(int irq, void *dev_id) | |||
| 80 | printk(KERN_WARNING "act2000: errIRQ\n"); | 80 | printk(KERN_WARNING "act2000: errIRQ\n"); |
| 81 | } | 81 | } |
| 82 | if (istatus) | 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 | return IRQ_HANDLED; | 84 | return IRQ_HANDLED; |
| 85 | } | 85 | } |
| 86 | 86 | ||
| @@ -131,6 +131,8 @@ act2000_isa_enable_irq(act2000_card * card) | |||
| 131 | int | 131 | int |
| 132 | act2000_isa_config_irq(act2000_card * card, short irq) | 132 | act2000_isa_config_irq(act2000_card * card, short irq) |
| 133 | { | 133 | { |
| 134 | int old_irq; | ||
| 135 | |||
| 134 | if (card->flags & ACT2000_FLAGS_IVALID) { | 136 | if (card->flags & ACT2000_FLAGS_IVALID) { |
| 135 | free_irq(card->irq, card); | 137 | free_irq(card->irq, card); |
| 136 | } | 138 | } |
| @@ -139,8 +141,10 @@ act2000_isa_config_irq(act2000_card * card, short irq) | |||
| 139 | if (!irq) | 141 | if (!irq) |
| 140 | return 0; | 142 | return 0; |
| 141 | 143 | ||
| 142 | if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) { | 144 | old_irq = card->irq; |
| 143 | card->irq = irq; | 145 | card->irq = irq; |
| 146 | if (request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) { | ||
| 147 | card->irq = old_irq; | ||
| 144 | card->flags |= ACT2000_FLAGS_IVALID; | 148 | card->flags |= ACT2000_FLAGS_IVALID; |
| 145 | printk(KERN_WARNING | 149 | printk(KERN_WARNING |
| 146 | "act2000: Could not request irq %d\n",irq); | 150 | "act2000: Could not request irq %d\n",irq); |
