irq2dev_map in 2.1.60

Russell Coker - mailing lists account (bofh@snoopy.virtual.net.au)
Mon, 27 Oct 97 18:18:35 +1000


The patch from 2.1.59 to 2.1.60 removes irq2dev_map from most places in
the kernel. It appears that the aim is to remove it from all parts of the
kernel as part of support for shared interrupts. The only place it was
left in was in the hisax ISDN driver.
Here is a patch which removes it from the Hisax driver (and allows that
driver to compile again). It compiles OK, but as I don't own a Hisax ISDN
card I couldn't test it. If you own a Hisax card and feel like
experimenting then please let me know how this goes.

diff -ru --exclude=*.o linux-orig-2.1.60/drivers/isdn/hisax/avm_a1.c
linux/drivers/isdn/hisax/avm_a1.c ---
linux-orig-2.1.60/drivers/isdn/hisax/avm_a1.c Fri May 30 14:53:05 1997 +++
linux/drivers/isdn/hisax/avm_a1.c Mon Oct 27 18:44:31 1997 @@ -558,8 +558,6
@@
u_char val, sval, stat = 0;
char tmp[32];

- sp = (struct IsdnCardState *) irq2dev_map[intno];
-
if (!sp) {
printk(KERN_WARNING "AVM A1: Spurious interrupt!\n");
return;
@@ -798,7 +796,6 @@
printk(KERN_WARNING
"AVM A1: IRQ(%d) getting no interrupts during init\n",
sp->irq);
- irq2dev_map[sp->irq] = NULL;
free_irq(sp->irq, NULL);
return (0);
}
diff -ru --exclude=*.o linux-orig-2.1.60/drivers/isdn/hisax/elsa.c
linux/drivers/isdn/hisax/elsa.c ---
linux-orig-2.1.60/drivers/isdn/hisax/elsa.c Fri May 30 14:53:05 1997 +++
linux/drivers/isdn/hisax/elsa.c Mon Oct 27 18:46:41 1997 @@ -887,7 +887,7
@@
struct IsdnCardState *sp;
u_char val;

- sp = (struct IsdnCardState *) irq2dev_map[intno];
+ sp = (struct IsdnCardState *) dev_id;

if (!sp) {
printk(KERN_WARNING "Elsa: Spurious interrupt!\n");
@@ -1219,7 +1219,6 @@
"Elsa: IRQ(%d) getting no interrupts during init %d\n",
sp->irq, 4 - cnt);
if (cnt == 1) {
- irq2dev_map[sp->irq] = NULL;
free_irq(sp->irq, NULL);
return (0);
} else {
diff -ru --exclude=*.o linux-orig-2.1.60/drivers/isdn/hisax/isdnl1.c
linux/drivers/isdn/hisax/isdnl1.c ---
linux-orig-2.1.60/drivers/isdn/hisax/isdnl1.c Fri May 30 14:53:06 1997 +++
linux/drivers/isdn/hisax/isdnl1.c Mon Oct 27 18:45:50 1997 @@ -772,7 +772,6
@@
restore_flags(flags);
return (0);
}
- irq2dev_map[card->sp->irq] = (void *) card->sp;
restore_flags(flags);
return (1);
}
@@ -782,7 +781,6 @@
{
struct IsdnCard *card = cards + cardnr;

- irq2dev_map[card->sp->irq] = NULL;
free_irq(card->sp->irq, NULL);
}

diff -ru --exclude=*.o linux-orig-2.1.60/drivers/isdn/hisax/ix1_micro.c
linux/drivers/isdn/hisax/ix1_micro.c ---
linux-orig-2.1.60/drivers/isdn/hisax/ix1_micro.c Fri May 30 14:53:06 1997
+++ linux/drivers/isdn/hisax/ix1_micro.c Mon Oct 27 18:46:58 1997 @@ -644,7
+644,7 @@
struct IsdnCardState *sp;
u_char val, stat = 0;

- sp = (struct IsdnCardState *) irq2dev_map[intno];
+ sp = (struct IsdnCardState *) dev_id;

if (!sp) {
printk(KERN_WARNING "Teles: Spurious interrupt!\n");
@@ -867,7 +867,6 @@
printk(KERN_WARNING
"ix1-Micro: IRQ(%d) getting no interrupts during init\n",
sp->irq);
- irq2dev_map[sp->irq] = NULL;
free_irq(sp->irq, NULL);
return (0);
}
diff -ru --exclude=*.o linux-orig-2.1.60/drivers/isdn/hisax/teles0.c
linux/drivers/isdn/hisax/teles0.c ---
linux-orig-2.1.60/drivers/isdn/hisax/teles0.c Fri May 30 14:53:06 1997 +++
linux/drivers/isdn/hisax/teles0.c Mon Oct 27 18:47:14 1997 @@ -605,7 +605,7
@@
struct IsdnCardState *sp;
u_char val, stat = 0;

- sp = (struct IsdnCardState *) irq2dev_map[intno];
+ sp = (struct IsdnCardState *) dev_id;

if (!sp) {
printk(KERN_WARNING "Teles0: Spurious interrupt!\n");
@@ -828,7 +828,6 @@
printk(KERN_WARNING
"Teles0: IRQ(%d) getting no interrupts during init\n",
sp->irq);
- irq2dev_map[sp->irq] = NULL;
free_irq(sp->irq, NULL);
return (0);
}
diff -ru --exclude=*.o linux-orig-2.1.60/drivers/isdn/hisax/teles3.c
linux/drivers/isdn/hisax/teles3.c ---
linux-orig-2.1.60/drivers/isdn/hisax/teles3.c Fri May 30 14:53:06 1997 +++
linux/drivers/isdn/hisax/teles3.c Mon Oct 27 18:47:26 1997 @@ -585,7 +585,7
@@
u_char val, stat = 0;
int count = 0;

- sp = (struct IsdnCardState *) irq2dev_map[intno];
+ sp = (struct IsdnCardState *) dev_id;

if (!sp) {
printk(KERN_WARNING "Teles: Spurious interrupt!\n");
@@ -829,7 +829,6 @@
printk(KERN_WARNING
"Teles3: IRQ(%d) getting no interrupts during init\n",
sp->irq);
- irq2dev_map[sp->irq] = NULL;
free_irq(sp->irq, NULL);
return (0);
}

-- 
-----------------------------------------------------------
In return for "mailbag contention" errors from buggy Exchange
servers I'll set my mail server to refuse mail from your domain.
The same response applies when a message to a postmaster
account bounces.
"Russell Coker - mailing lists account" <bofh@snoopy.virtual.net.au>
-----------------------------------------------------------