During a control operation (like a reset), wait 10us after selecting
the drive. This fixes (or rather, works around) a timing problem with WD Raptor drives attached to a Sil3114 SATA controller. Should fix PR 23808, it fixes the same problem for me.
This commit is contained in:
parent
9359a18b6a
commit
7e3d28789f
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: ata_wdc.c,v 1.52 2004/01/03 23:59:58 thorpej Exp $ */
|
||||
/* $NetBSD: ata_wdc.c,v 1.53 2004/03/02 13:13:57 fvdl Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998, 2001, 2003 Manuel Bouyer.
|
||||
@ -66,7 +66,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 1.52 2004/01/03 23:59:58 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 1.53 2004/03/02 13:13:57 fvdl Exp $");
|
||||
|
||||
#ifndef WDCDEBUG
|
||||
#define WDCDEBUG
|
||||
@ -234,6 +234,7 @@ wdc_ata_bio_start(struct wdc_channel *chp, struct ata_xfer *xfer)
|
||||
wdc->select(chp, xfer->c_drive);
|
||||
bus_space_write_1(chp->cmd_iot, chp->cmd_iohs[wd_sdh], 0,
|
||||
WDSD_IBM | (xfer->c_drive << 4));
|
||||
DELAY(10);
|
||||
errstring = "wait";
|
||||
if (wdcwait(chp, WDCS_DRDY, WDCS_DRDY, ATA_DELAY, wait_flags))
|
||||
goto ctrltimeout;
|
||||
|
Loading…
Reference in New Issue
Block a user