mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-11 07:39:47 +00:00
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>
This commit is contained in:
parent
d12341f9f2
commit
246f93f5cc
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user