[OFFTOPIC] Getting via-rhine to work

Mogens Kjaer mk@crc.dk
Mon Jan 25 10:48:14 1999


I wrote:

> /proc/ioports
> =============
> 
> 0000-001f : dma1
> 0020-003f : pic1
> 0040-005f : timer
> 0060-006f : keyboard
> 0080-009f : dma page reg
> 00a0-00bf : pic2
> 00c0-00df : dma2
> 00f0-00ff : npu
> 0170-0177 : ide1
> 01f0-01f7 : ide0
> 02f8-02ff : serial(auto)
> 0376-0376 : ide1
> 03bc-03be : lp
> 03c0-03df : vga+
> 03f0-03f5 : floppy
> 03f6-03f6 : ide0
> 03f7-03f7 : floppy DIR
> 03f8-03ff : serial(auto)
> 5080-5087 : IDE DMA
> 5088-508f : IDE DMA

I added some test printing to via-rhine.c, and it failed during the
check_region call.

I compared this part of the code with the code in tulip.c and
these lines gave a clue:

                /* Remove I/O space marker in bit 0. */
                pci_ioaddr &= ~3;

so setting the two least significant bits to zero during the
check_region call fixed the
problem.

The network card starts at 5000, but pciaddr is 5001, so if the card
need 128 bytes it
would overlap with the first IDE DMA (see the list above).

Hope this is useful information for somebody...

Mogens
-- 
Mogens Kjaer, Carlsberg Laboratory, Dept. of Chemistry
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk