summaryrefslogtreecommitdiff
path: root/sys/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'sys/scsi')
-rw-r--r--sys/scsi/atapi_base.c196
-rw-r--r--sys/scsi/cd_atapi.c5
-rw-r--r--sys/scsi/cd_scsi.c6
-rw-r--r--sys/scsi/scsiconf.c11
4 files changed, 4 insertions, 214 deletions
diff --git a/sys/scsi/atapi_base.c b/sys/scsi/atapi_base.c
index 351e98c7059..9adc4f0e46a 100644
--- a/sys/scsi/atapi_base.c
+++ b/sys/scsi/atapi_base.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: atapi_base.c,v 1.1 1999/07/20 06:21:59 csapuntz Exp $ */
+/* $OpenBSD: atapi_base.c,v 1.2 2004/05/09 14:08:11 krw Exp $ */
/* $NetBSD: atapi_base.c,v 1.12 1999/06/25 18:58:54 thorpej Exp $ */
/*-
@@ -52,200 +52,6 @@
#include <scsi/atapi_all.h>
#include <scsi/scsiconf.h>
-#ifndef __OpenBSD__
-/*
- * Look at the returned sense and act on the error, determining
- * the unix error number to pass back. (0 = report no error)
- *
- * THIS IS THE DEFAULT ERROR HANDLER
- */
-int
-atapi_interpret_sense(xs)
- struct scsipi_xfer *xs;
-{
- int key, error;
- struct scsipi_link *sc_link = xs->sc_link;
- char *msg = NULL;
-
- /*
- * If the device has it's own error handler, call it first.
- * If it returns a legit error value, return that, otherwise
- * it wants us to continue with normal error processing.
- */
- if (sc_link->device->err_handler) {
- SC_DEBUG(sc_link, SDEV_DB2,
- ("calling private err_handler()\n"));
- error = (*sc_link->device->err_handler) (xs);
- if (error != SCSIRET_CONTINUE)
- return (error); /* error >= 0 better ? */
- }
- /*
- * otherwise use the default, call the generic sense handler if we have
- * more than the sense key
- */
- if (xs->error == XS_SENSE)
- return (scsipi_interpret_sense(xs));
-
- key = (xs->sense.atapi_sense & 0xf0) >> 4;
- switch (key) {
- case SKEY_RECOVERED_ERROR:
- msg = "soft error (corrected)";
- case SKEY_NO_SENSE:
- if (xs->resid == xs->datalen)
- xs->resid = 0; /* not short read */
- error = 0;
- break;
- case SKEY_NOT_READY:
- if ((sc_link->flags & SDEV_REMOVABLE) != 0)
- sc_link->flags &= ~SDEV_MEDIA_LOADED;
- if ((xs->flags & SCSI_IGNORE_NOT_READY) != 0)
- return (0);
- if ((xs->flags & SCSI_SILENT) != 0)
- return (EIO);
- msg = "not ready";
- error = EIO;
- break;
- case SKEY_MEDIUM_ERROR: /* MEDIUM ERROR */
- msg = "medium error";
- error = EIO;
- break;
- case SKEY_HARDWARE_ERROR:
- msg = "non-media hardware failure";
- error = EIO;
- break;
- case SKEY_ILLEGAL_REQUEST:
- if ((xs->flags & SCSI_IGNORE_ILLEGAL_REQUEST) != 0)
- return (0);
- if ((xs->flags & SCSI_SILENT) != 0)
- return (EIO);
- msg = "illegal request";
- error = EINVAL;
- break;
- case SKEY_UNIT_ATTENTION:
- if ((sc_link->flags & SDEV_REMOVABLE) != 0)
- sc_link->flags &= ~SDEV_MEDIA_LOADED;
- if ((xs->flags & SCSI_IGNORE_MEDIA_CHANGE) != 0 ||
- /* XXX Should reupload any transient state. */
- (sc_link->flags & SDEV_REMOVABLE) == 0)
- return (ERESTART);
- if ((xs->flags & SCSI_SILENT) != 0)
- return (EIO);
- msg = "unit attention";
- error = EIO;
- break;
- case SKEY_WRITE_PROTECT:
- msg = "readonly device";
- error = EROFS;
- break;
- case SKEY_ABORTED_COMMAND:
- msg = "command aborted";
- error = ERESTART;
- break;
- default:
- error = EIO;
- break;
- }
-
- if (!key) {
- if (xs->sense.atapi_sense & 0x01) {
- /* Illegal length indication */
- msg = "ATA illegal length indication";
- error = EIO;
- }
- if (xs->sense.atapi_sense & 0x02) { /* vol overflow */
- msg = "ATA volume overflow";
- error = ENOSPC;
- }
- if (xs->sense.atapi_sense & 0x04) { /* Aborted command */
- msg = "ATA command aborted";
- error = ERESTART;
- }
- }
- if (msg) {
- sc_link->sc_print_addr(sc_link);
- printf("%s\n", msg);
- } else {
- if (error) {
- sc_link->sc_print_addr(sc_link);
- printf("unknown error code %d\n",
- xs->sense.atapi_sense);
- }
- }
-
- return (error);
-
-}
-
-/*
- * Utility routines often used in SCSI stuff
- */
-
-
-/*
- * Print out the scsi_link structure's address info.
- */
-void
-atapi_print_addr(sc_link)
- struct scsipi_link *sc_link;
-{
-
- printf("%s(%s:%d:%d): ",
- sc_link->device_softc ?
- ((struct device *)sc_link->device_softc)->dv_xname : "probe",
- ((struct device *)sc_link->adapter_softc)->dv_xname,
- sc_link->scsipi_atapi.channel, sc_link->scsipi_atapi.drive);
-}
-
-/*
- * ask the atapi driver to perform a command for us.
- * tell it where to read/write the data, and how
- * long the data is supposed to be. If we have a buf
- * to associate with the transfer, we need that too.
- */
-int
-atapi_scsipi_cmd(sc_link, scsipi_cmd, cmdlen, data_addr, datalen,
- retries, timeout, bp, flags)
- struct scsipi_link *sc_link;
- struct scsipi_generic *scsipi_cmd;
- int cmdlen;
- u_char *data_addr;
- int datalen;
- int retries;
- int timeout;
- struct buf *bp;
- int flags;
-{
- struct scsipi_xfer *xs;
- int error, s;
-
- SC_DEBUG(sc_link, SDEV_DB2, ("atapi_cmd\n"));
-
-#ifdef DIAGNOSTIC
- if (bp != 0 && (flags & SCSI_NOSLEEP) == 0)
- panic("atapi_scsipi_cmd: buffer without nosleep");
-#endif
-
- if ((xs = scsipi_make_xs(sc_link, scsipi_cmd, cmdlen, data_addr,
- datalen, retries, timeout, bp, flags)) == NULL)
- return (ENOMEM);
-
- xs->cmdlen = (sc_link->scsipi_atapi.cap & ACAP_LEN) ? 16 : 12;
-
- if ((error = scsipi_execute_xs(xs)) == EJUSTRETURN)
- return (0);
-
- /*
- * we have finished with the xfer stuct, free it and
- * check if anyone else needs to be started up.
- */
- s = splbio();
- scsipi_free_xs(xs, flags);
- splx(s);
- return (error);
-}
-
-#endif
-
int
atapi_mode_select(l, data, len, flags, retries, timeout)
struct scsi_link *l;
diff --git a/sys/scsi/cd_atapi.c b/sys/scsi/cd_atapi.c
index 94bb0fa7d3f..f1158b367c1 100644
--- a/sys/scsi/cd_atapi.c
+++ b/sys/scsi/cd_atapi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd_atapi.c,v 1.2 2002/03/14 01:27:13 millert Exp $ */
+/* $OpenBSD: cd_atapi.c,v 1.3 2004/05/09 14:08:11 krw Exp $ */
/* $NetBSD: cd_atapi.c,v 1.10 1998/08/31 22:28:06 cgd Exp $ */
/*
@@ -46,9 +46,6 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*/
-#ifndef __OpenBSD__
-#include "rnd.h"
-#endif
#include <sys/types.h>
#include <sys/param.h>
diff --git a/sys/scsi/cd_scsi.c b/sys/scsi/cd_scsi.c
index 1e3e476c3a5..a423823d0b6 100644
--- a/sys/scsi/cd_scsi.c
+++ b/sys/scsi/cd_scsi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd_scsi.c,v 1.4 2002/03/14 01:27:13 millert Exp $ */
+/* $OpenBSD: cd_scsi.c,v 1.5 2004/05/09 14:08:11 krw Exp $ */
/* $NetBSD: cd_scsi.c,v 1.14 1998/08/31 22:28:06 cgd Exp $ */
/*-
@@ -54,10 +54,6 @@
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*/
-#ifndef __OpenBSD__
-#include "rnd.h"
-#endif
-
#include <sys/types.h>
#include <sys/param.h>
#include <sys/systm.h>
diff --git a/sys/scsi/scsiconf.c b/sys/scsi/scsiconf.c
index b28db536476..2c8cb75494c 100644
--- a/sys/scsi/scsiconf.c
+++ b/sys/scsi/scsiconf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: scsiconf.c,v 1.90 2004/05/07 22:56:19 krw Exp $ */
+/* $OpenBSD: scsiconf.c,v 1.91 2004/05/09 14:08:11 krw Exp $ */
/* $NetBSD: scsiconf.c,v 1.57 1996/05/02 01:09:01 neil Exp $ */
/*
@@ -121,19 +121,10 @@ scsiprint(aux, pnp)
void *aux;
const char *pnp;
{
-#ifndef __OpenBSD__
- struct scsi_link *l = aux;
-#endif
-
/* only "scsibus"es can attach to "scsi"s; easy. */
if (pnp)
printf("scsibus at %s", pnp);
-#ifndef __OpenBSD__
- /* don't print channel if the controller says there can be only one. */
- if (l->channel != SCSI_CHANNEL_ONLY_ONE)
- printf(" channel %d", l->channel);
-#endif
return (UNCONF);
}