diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-10-11 04:59:46 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-10-11 04:59:46 -0400 |
commit | 701328a7b58d50d8640c21ba5fdf3170b1ddac16 (patch) | |
tree | 99a3fe44310a97e92ad1cb3a01f2ee3f6ed0d59a /drivers/isdn | |
parent | 53e36ada37cb8b01cfbf674580a79edc0bb764c7 (diff) | |
parent | 53a5fbdc2dff55161a206ed1a1385a8fa8055c34 (diff) | |
download | kernel_samsung_crespo-701328a7b58d50d8640c21ba5fdf3170b1ddac16.zip kernel_samsung_crespo-701328a7b58d50d8640c21ba5fdf3170b1ddac16.tar.gz kernel_samsung_crespo-701328a7b58d50d8640c21ba5fdf3170b1ddac16.tar.bz2 |
Merge branch 'master' into upstream-fixes
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/act2000/act2000_isa.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/isdn/act2000/act2000_isa.c b/drivers/isdn/act2000/act2000_isa.c index 3014495..3cac237 100644 --- a/drivers/isdn/act2000/act2000_isa.c +++ b/drivers/isdn/act2000/act2000_isa.c @@ -16,8 +16,6 @@ #include "act2000_isa.h" #include "capi.h" -static act2000_card *irq2card_map[16]; - /* * Reset Controller, then try to read the Card's signature. + Return: @@ -65,14 +63,9 @@ act2000_isa_detect(unsigned short portbase) static irqreturn_t act2000_isa_interrupt(int irq, void *dev_id) { - act2000_card *card = irq2card_map[irq]; + act2000_card *card = dev_id; u_char istatus; - if (!card) { - printk(KERN_WARNING - "act2000: Spurious interrupt!\n"); - return IRQ_NONE; - } istatus = (inb(ISA_PORT_ISR) & 0x07); if (istatus & ISA_ISR_OUT) { /* RX fifo has data */ @@ -139,17 +132,15 @@ int act2000_isa_config_irq(act2000_card * card, short irq) { if (card->flags & ACT2000_FLAGS_IVALID) { - free_irq(card->irq, NULL); - irq2card_map[card->irq] = NULL; + free_irq(card->irq, card); } card->flags &= ~ACT2000_FLAGS_IVALID; outb(ISA_COR_IRQOFF, ISA_PORT_COR); if (!irq) return 0; - if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, NULL)) { + if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) { card->irq = irq; - irq2card_map[card->irq] = card; card->flags |= ACT2000_FLAGS_IVALID; printk(KERN_WARNING "act2000: Could not request irq %d\n",irq); @@ -188,10 +179,9 @@ act2000_isa_release(act2000_card * card) unsigned long flags; spin_lock_irqsave(&card->lock, flags); - if (card->flags & ACT2000_FLAGS_IVALID) { - free_irq(card->irq, NULL); - irq2card_map[card->irq] = NULL; - } + if (card->flags & ACT2000_FLAGS_IVALID) + free_irq(card->irq, card); + card->flags &= ~ACT2000_FLAGS_IVALID; if (card->flags & ACT2000_FLAGS_PVALID) release_region(card->port, ISA_REGION); |