Problem with wd.c not getting the right IRQ for a WD80x3 card

Jonathan Claxton (jzc@primenet.com)
Tue, 11 Jul 1995 18:28:02 -0700 (MST)


Sorry, I sent this email to the wrong list, this should be correct.....

I have found a problem with wd.c module not getting the right IRQ for my
WD80x3 like card when going from 1.3.6 to 1.3.7 Took me a while to find
this bugger. The IRQ, SHRMEM and IOADDR is set in my
linux/drivers/net/CONFIG file so the settings can be transfered to
Space.c.

Here are the messages for 1.3.6:

kernel: eth0: WD80x3 at 0x300, 00 C0 93 00 90 FE WD8013, IRQ 10, shared
memory at 0xd0000-0xd3fff.
kernel: wd.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
kernel: Linux version 1.3.6 (root@jzc) (gcc version 2.5.8) #2 Tue Jul 4
16:28:07 MST 1995

1.3.6 wd.c gets the right IRQ, BUT in 1.3.7:

kernel: eth0: WD80x3 at 0x300, 00 C0 93 00 90 FE WD8013, IRQ 9, shared
memory at 0xd0000-0xd3fff.
kernel: wd.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
kernel: Linux version 1.3.7 (root@jzc) (gcc version 2.5.8) #2 Thu Jul 6
22:35:04 MST 1995

In 1.3.7, wd.c sets the wrong IRQ. I look in wd.c and find these lines:

...............

/* The 8390 isn't at the base address -- the ASIC regs are there! */
dev->base_addr = ioaddr+WD_NIC_OFFSET;

if (dev->irq < 2) {
int irqmap[] = {9,3,5,7,10,11,15,4};
int reg1 = inb(ioaddr+1);

...............

Soooooo, I said to myself "Maybe wd.c is setting IRQ to 9 cause it is the
first one that it detected"

I then switched 9 and 10 around and it works, for now.

Somehow, wd.c is not getting the IRQ setting from Space.c and proceeds to
set the IRQ to 9 from the above line. I figured something got changed
outside of wd.c since it was not changed in 1.3.7.

-------------------------------------------------------------------------------
Jonathan Claxton __ __ ____ ___ ___ ____
jzc@primenet.com /__)/__) / / / / /_ /\ / /_ /
/ / \ / / / / /__ / \/ /___ /
-------------------------------------------------------------------------------