Skip to content

Commit

Permalink
drivers/isdn/act2000: kill irq2card_map
Browse files Browse the repository at this point in the history
Eliminate irq->card lookup table, by properly passing the card pointer
via request_irq() like other drivers.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Jeff Garzik committed Oct 6, 2006
1 parent 8f4aff6 commit d87dbed
Showing 1 changed file with 6 additions and 16 deletions.
22 changes: 6 additions & 16 deletions drivers/isdn/act2000/act2000_isa.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit d87dbed

Please sign in to comment.