f9d629fb93
1) Don't wait for DRQ on an IDENTIFY command -- if it's not set when we see BSY clear, abort the command and ignore the drive. (Do this by testing for DRQ in the read/write cases in __wdccommand_intr().) 2) Don't wait for DRQ to deassert when we finish an IDENTIFY (or any other non-block command that reads data) -- we don't do this for block I/O, and empirically it doesn't clear on my CF cards at all, causing a pointless 1s delay. 3) Add comments to some of the delay()s, and add missing ones in wdcreset() and the WDCC_RECAL in the so-called "pre-ATA" probe. 4) Slightly simplify the reset sequence -- we were doing an extra I/O. 5) Modify the register writability test to make sure that registers are not overlapped -- this can happen in some weird cases with a missing device 1. 6) Check the error register value after the reset -- if it's not 01h or 81h, as appropriate (see ATA spec), punt. Tested with a number of ATA-only, ATAPI-only, mixed ATA-ATAPI, CF, and IDE disk configurations. Also remove the SINGLE_DRIVE nonsense again. |
||
---|---|---|
.. | ||
altq | ||
arch | ||
coda | ||
compat | ||
conf | ||
crypto | ||
ddb | ||
dev | ||
fs | ||
gdbscripts | ||
ipkdb | ||
kern | ||
lib | ||
lkm | ||
miscfs | ||
net | ||
net80211 | ||
netatalk | ||
netccitt | ||
netinet | ||
netinet6 | ||
netipsec | ||
netisdn | ||
netiso | ||
netkey | ||
netnatm | ||
netns | ||
netsmb | ||
nfs | ||
opencrypto | ||
stand | ||
sys | ||
ufs | ||
uvm | ||
Makefile |