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. |
||
---|---|---|
.. | ||
aic_pcmcia.c | ||
com_pcmcia.c | ||
devlist2h.awk | ||
esl_pcmcia.c | ||
esl.c | ||
eslvar.h | ||
esp_pcmcia.c | ||
fdc_pcmcia.c | ||
files.pcmcia | ||
if_an_pcmcia.c | ||
if_awi_pcmcia.c | ||
if_cnw.c | ||
if_cnwioctl.h | ||
if_cnwreg.h | ||
if_cs_pcmcia.c | ||
if_ep_pcmcia.c | ||
if_mbe_pcmcia.c | ||
if_ne_pcmcia.c | ||
if_ray.c | ||
if_rayreg.h | ||
if_sm_pcmcia.c | ||
if_tr_pcmcia.c | ||
if_wi_pcmcia.c | ||
if_xi.c | ||
if_xireg.h | ||
isic_pcmcia_avm_fritz.c | ||
isic_pcmcia_elsa_isdnmc.c | ||
isic_pcmcia_elsa_mcall.c | ||
isic_pcmcia_sbspeedstar2.c | ||
isic_pcmcia.c | ||
isic_pcmcia.h | ||
Makefile | ||
Makefile.pcmciadevs | ||
mhzc.c | ||
nca_pcmcia.c | ||
opl_esl.c | ||
pcmcia_cis_quirks.c | ||
pcmcia_cis.c | ||
pcmcia.c | ||
pcmciachip.h | ||
pcmciadevs | ||
pcmciadevs_data.h | ||
pcmciadevs.h | ||
pcmciareg.h | ||
pcmciavar.h | ||
pcmcom.c | ||
wdc_pcmcia.c |