Re: 2.3.18ac8 doesn't detect tulip (again!)

Matti Aarnio (matti.aarnio@sonera.fi)
Wed, 22 Sep 1999 21:08:09 +0300


On the issue of "why my TULIP card is not found" I made a bit of code
changes ( printk()s at all 'continue' places in the drivers/pci/scan.c ),
and found thus following dmesg report:

tulip.c:v0.91m 9/15/99 becker@cesdis.gsfc.nasa.gov
Found Digital DS21140 Tulip at PCI address 0xe2001000, IRQ 10.
PCI-address region 0xe2001000-0xe20013ff not completely free

which gave me some ideas...
Then I modprobe:d de4x5 in (and 3c59x), and got following from
"/sbin/lspci -v" command (I got it from VGER via CVS, but I don't
know if it is added to any distributions):

00:0e.0 Ethernet controller: Digital Equipment Corporation DECchip 21140
[FasterNet] (rev 22)
Flags: bus master, medium devsel, latency 96, IRQ 10
I/O ports at 6100
Memory at e2001000 (32-bit, non-prefetchable)

00:0f.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX (rev 24)
Flags: bus master, medium devsel, latency 32, IRQ 11
I/O ports at 6200
Memory at e2002000 (32-bit, non-prefetchable)

The lspci doesn't tell the sizes of regions (bad bad! -- if it can
know them ?) but comparing those two above I would say used IO range
is 0x0100, and memory range is 0x1000. (This is somewhat wrong guess.)

Now at tulip.c there are these code fragments:

static void *tulip_probe1(struct pci_dev *pdev, void *init_dev,
long ioaddr, int irq, int chip_idx, int find_cnt);
#ifdef USE_IO_OPS
#define TULIP_IOTYPE PCI_USES_MASTER | PCI_USES_IO | PCI_ADDR0
#define TULIP_SIZE 0x80
#else
#define TULIP_IOTYPE PCI_USES_MASTER | PCI_USES_MEM | PCI_ADDR1
#define TULIP_SIZE 0x400
#endif
...
static struct pci_id_info pci_tbl[] = {
{ "Digital DC21040 Tulip", { 0x00021011, 0xffffffff },
TULIP_IOTYPE, TULIP_SIZE, DC21040 },
{ "Digital DC21041 Tulip", { 0x00141011, 0xffffffff },
TULIP_IOTYPE, TULIP_SIZE, DC21041 },
{ "Digital DS21140 Tulip", { 0x00091011, 0xffffffff },
TULIP_IOTYPE, TULIP_SIZE, DC21140 },
{ "Digital DS21143 Tulip", { 0x00191011, 0xffffffff },
TULIP_IOTYPE, TULIP_SIZE, DC21142 },
...

Changeing that latter size to 0x1000 for 21142/21143 is advisable
(per chip datasheet). However for 21140 it is pure poison.

See what your /proc/iomem and /proc/ioports are telling
about ranges for each 21143 card ?

Somehow /proc/iomem gets the range ok, and when I set memory size
for my DEC 21140 to be 128, it installs just fine, and works.

$ cat /proc/iomem
...
e2001000-e200107f : DEC DC21140
e2002000-e200207f : 3Com 3C905B 100bTX

/Matti Aarnio <matti.aarnio@sonera.fi>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/