to be cleared always in edmcadone(), otherwise if there is a write
via bounce buffer followed by read directly to buf, the read operation
would return trashed data (the buf data would get overwritten
by contents of bounce buffer in edmcadone()).
Reset b_resid as necessary when the i/o is done, too.
g/c some unneeded stuff, use lockmgr()-style locking in ed_[un]lock(),
better avoid some deadlocks
These changes make the driver quite a bit more stable. It's actually
reliable enough to be possible to newfs the drive and use it for
read/write filesystem now.
Tested with NE/2 card provided to me by Hans Hubner <hans@Huebner.ORG>.
The Compex and Arco cards were not tested. According to Linux ne2 driver,
they should work same way as NE/2.
Disk & Controller only at the moment.
This driver still needs some touchup (error recovery is not quite
good, MCA DMA controller goo should be moved to driver independant
location), but is working enough to be usable for others. And I
want this under CVS control :)
Thanks to Scott Telford <st@epcc.ed.ac.uk> for providing me docs for
these devices (IBM DASD Storage Interface Specification for MCA rev. 2.2).
and shares some bits with ISA AT1700 driver. Gee, this one was really
easy :)
This card turned out to be quite good performer - I get about 360KB/s
on 386DX PS/2 machine, which is best of all supported cards so far.
Tested with AT1720T, card donated by David Brownlee.
WD8003W/A, card provided by David Brownlee (thanks!). The SMC Elite stuff not
tested since I don't have any; hopefully it's correct, should match
information in ADF files.
The MCA-specific init quirk taken from Linux smc-mca.c driver.
I don't quite grok why it works, but it does *cross fingers*.
The WD8003W/A seems to be quite a good choice. I get like 340KB/s on my
machine, where 3c523 does only like 310KB/s. The numbers would be probably
even better with faster CPU than 386DX :)
provided to me by David Brownlee (thanks!).
Performance of this card is quite poor on my PS/2 with 386DX, like 100KB/s
at best, but as low as 5KB/s when transferring bigger files due to
packet overruns. It would be good to revisit this later, probably by
teaching the ic code to use RX Early.
reset (same place as in the Linux driver). Hopefully this would fix
the initialization problem I've seen previously (cannot repeat it
even without this change no matter how I play with the card).
Remove the comment about the initialization problem now.