Michael Shmulevich wrote:
> Pete Popov wrote:
> > Another one is the RTL8139. It's quite cheap (I think less than $20).
> > Pete
> Surprisingly enough, Realtek's driver is quite x86-oriented. It uses
> some ugly outb() functtions without any ioremap()'ping.
> We tried to modify it to work for MIPS, but failed. There are some
> hard-to-detect situations, when driver just cannot talk to the hardware,
> probably due to transmit/receive buffer synchronization. But after some
> period the connection is restored (reset?).
The 8139 driver (at least the latest one) has an "ifdef" option to use
I/O or memory mapping. I've tried both and both work fine without any
modifications. The I/O works fine, provided that you've set things up
The inb()/outb() functions are part of just about every driver,
unfortunately. I really don't like this x86 emulation, but if you want
to be able to use drivers without having to modify every one of them,
you'll have to do this.
To get the realtek driver to work, all you need to do is to set
mips_io_port_base to KSEG1. Let's assume that the ethernet card has
been assigned i/o space at 0x14000000. The driver will pick that up as
the ioaddr and use the 0x1400000 as the "port". The inb()/outb() macros
add mips_io_port_base to the "port" value and now you have 0xB4000000,
so you can access the card.