summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/atapiscsi/atapiscsi.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/sys/dev/atapiscsi/atapiscsi.c b/sys/dev/atapiscsi/atapiscsi.c
index 802cfa3fbc3..2e376b609d2 100644
--- a/sys/dev/atapiscsi/atapiscsi.c
+++ b/sys/dev/atapiscsi/atapiscsi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: atapiscsi.c,v 1.35 2001/01/29 02:18:33 niklas Exp $ */
+/* $OpenBSD: atapiscsi.c,v 1.36 2001/01/30 03:16:09 csapuntz Exp $ */
/*
* This code is derived from code with the copyright below.
@@ -77,7 +77,6 @@
#define DMAMODE_WAIT 5
#define READY 6
-
#define DEBUG_INTR 0x01
#define DEBUG_XFERS 0x02
#define DEBUG_STATUS 0x04
@@ -1426,9 +1425,21 @@ piomode:
if (drvp->PIO_mode < 3) {
drvp->PIO_mode = 3;
goto piomode;
- } else {
- goto error;
}
+ /*
+ * All ATAPI drives are supposed to support
+ * PIO mode 3 or greater.
+ *
+ * If the drive fails the set PIO mode command,
+ * assume it just doesn't support the set PIO mode
+ * command.
+ *
+ * Ideally, we would program the channel controller
+ * to run at PIO mode 3. However, the channel
+ * controller is only running faster than PIO mode 3
+ * if the drive said it supported that.
+ */
+ drvp->PIO_mode = 3;
}
/* fall through */
@@ -1468,16 +1479,6 @@ timeout:
xfer->next = wdc_atapi_reset;
return (GOTO_NEXT);
-error:
- printf("%s:%d:%d: %s ",
- chp->wdc->sc_dev.dv_xname, chp->channel, xfer->drive,
- errstring);
- printf("error (0x%x)\n", chp->ch_error);
-
- sc_xfer->error = XS_DRIVER_STUFFUP;
-
- xfer->next = wdc_atapi_reset;
- return (GOTO_NEXT);
}
int