summaryrefslogtreecommitdiff
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
authormycroft <mycroft@NetBSD.org>2003-09-23 09:19:22 +0000
committermycroft <mycroft@NetBSD.org>2003-09-23 09:19:22 +0000
commitf9d629fb934420ba7069d098914ac45ef9eda29d (patch)
tree63aff812c48dc131dc9e43b7c01ba6cda6b47cc2 /lib/libc/stdlib
parent5a696d0850d2225767665e80f0b221b463a73439 (diff)
Fix more probe delay and/or failure problems:
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.
Diffstat (limited to 'lib/libc/stdlib')
0 files changed, 0 insertions, 0 deletions