Update for SCSPI changes.
This commit is contained in:
parent
2b02403498
commit
63b8530b4e
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ahb.c,v 1.27 1998/12/09 08:43:30 thorpej Exp $ */
|
||||
/* $NetBSD: ahb.c,v 1.28 1999/09/30 23:04:39 thorpej Exp $ */
|
||||
|
||||
#include "opt_ddb.h"
|
||||
|
||||
|
@ -323,7 +323,7 @@ ahb_send_mbox(sc, opcode, ecb)
|
|||
bus_space_write_1(iot, ioh, ATTN, opcode |
|
||||
ecb->xs->sc_link->scsipi_scsi.target);
|
||||
|
||||
if ((ecb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((ecb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(ahb_timeout, ecb, (ecb->timeout * hz) / 1000);
|
||||
}
|
||||
|
||||
|
@ -356,7 +356,7 @@ ahb_send_immed(sc, cmd, ecb)
|
|||
bus_space_write_1(iot, ioh, ATTN, OP_IMMED |
|
||||
ecb->xs->sc_link->scsipi_scsi.target);
|
||||
|
||||
if ((ecb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((ecb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(ahb_timeout, ecb, (ecb->timeout * hz) / 1000);
|
||||
}
|
||||
|
||||
|
@ -554,7 +554,7 @@ ahb_get_ecb(sc, flags)
|
|||
TAILQ_REMOVE(&sc->sc_free_ecb, ecb, chain);
|
||||
break;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
goto out;
|
||||
tsleep(&sc->sc_free_ecb, PRIBIO, "ahbecb", 0);
|
||||
}
|
||||
|
@ -611,7 +611,7 @@ ahb_done(sc, ecb)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, ecb->dmamap_xfer, 0,
|
||||
ecb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, ecb->dmamap_xfer);
|
||||
}
|
||||
|
@ -661,7 +661,7 @@ ahb_done(sc, ecb)
|
|||
}
|
||||
done:
|
||||
ahb_free_ecb(sc, ecb);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
|
||||
/*
|
||||
|
@ -870,7 +870,7 @@ ahb_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
/* Polled requests can't be queued for later. */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* If there are jobs in the queue, run them first.
|
||||
|
@ -901,7 +901,7 @@ ahb_scsi_cmd(xs)
|
|||
* is from a buf (possibly from interrupt time)
|
||||
* then we can't allow it to sleep
|
||||
*/
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((ecb = ahb_get_ecb(sc, flags)) == NULL) {
|
||||
/*
|
||||
* If we can't queue, we lose.
|
||||
|
@ -935,7 +935,7 @@ ahb_scsi_cmd(xs)
|
|||
* if there is already an immediate waiting,
|
||||
* then WE must wait
|
||||
*/
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
ecb->flags |= ECB_IMMED;
|
||||
if (sc->sc_immed_ecb)
|
||||
return TRY_AGAIN_LATER;
|
||||
|
@ -945,7 +945,7 @@ ahb_scsi_cmd(xs)
|
|||
ahb_send_immed(sc, AHB_TARG_RESET, ecb);
|
||||
splx(s);
|
||||
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return SUCCESSFULLY_QUEUED;
|
||||
|
||||
/*
|
||||
|
@ -976,17 +976,17 @@ ahb_scsi_cmd(xs)
|
|||
* Map the DMA transfer.
|
||||
*/
|
||||
#ifdef TFS
|
||||
if (flags & SCSI_DATA_UIO) {
|
||||
if (flags & XS_CTL_DATA_UIO) {
|
||||
error = bus_dmamap_load_uio(sc->sc_dmat,
|
||||
ecb->dmamap_xfer, (struct uio *)xs->data,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif /* TFS */
|
||||
{
|
||||
error = bus_dmamap_load(sc->sc_dmat,
|
||||
ecb->dmamap_xfer, xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
|
@ -1005,7 +1005,7 @@ ahb_scsi_cmd(xs)
|
|||
|
||||
bus_dmamap_sync(dmat, ecb->dmamap_xfer, 0,
|
||||
ecb->dmamap_xfer->dm_mapsize,
|
||||
(flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(flags & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
/*
|
||||
|
@ -1041,7 +1041,7 @@ ahb_scsi_cmd(xs)
|
|||
/*
|
||||
* Usually return SUCCESSFULLY QUEUED
|
||||
*/
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return SUCCESSFULLY_QUEUED;
|
||||
|
||||
/*
|
||||
|
@ -1079,7 +1079,7 @@ ahb_poll(sc, xs, count)
|
|||
*/
|
||||
if (bus_space_read_1(iot, ioh, G2STAT) & G2STAT_INT_PEND)
|
||||
ahbintr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return 0;
|
||||
delay(1000);
|
||||
count--;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: uha_eisa.c,v 1.13 1998/08/15 10:10:49 mycroft Exp $ */
|
||||
/* $NetBSD: uha_eisa.c,v 1.14 1999/09/30 23:04:39 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -261,7 +261,7 @@ u24_start_mbox(sc, mscp)
|
|||
bus_space_write_1(iot, ioh, U24_OGMCMD, 0x01);
|
||||
bus_space_write_1(iot, ioh, U24_LINT, U24_OGMFULL);
|
||||
|
||||
if ((mscp->xs->flags & SCSI_POLL) == 0)
|
||||
if ((mscp->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(uha_timeout, mscp, (mscp->timeout * hz) / 1000);
|
||||
}
|
||||
|
||||
|
@ -281,7 +281,7 @@ u24_poll(sc, xs, count)
|
|||
*/
|
||||
if (bus_space_read_1(iot, ioh, U24_SINT) & U24_SDIP)
|
||||
u24_intr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return (0);
|
||||
delay(1000);
|
||||
count--;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: adv.c,v 1.13 1999/08/07 07:20:15 thorpej Exp $ */
|
||||
/* $NetBSD: adv.c,v 1.14 1999/09/30 23:04:40 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Generic driver for the Advanced Systems Inc. Narrow SCSI controllers
|
||||
|
@ -288,7 +288,7 @@ adv_get_ccb(sc, flags)
|
|||
TAILQ_REMOVE(&sc->sc_free_ccb, ccb, chain);
|
||||
break;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
goto out;
|
||||
|
||||
tsleep(&sc->sc_free_ccb, PRIBIO, "advccb", 0);
|
||||
|
@ -355,7 +355,7 @@ adv_start_ccbs(sc)
|
|||
}
|
||||
TAILQ_REMOVE(&sc->sc_waiting_ccb, ccb, chain);
|
||||
|
||||
if ((ccb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((ccb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(adv_timeout, ccb, (ccb->timeout * hz) / 1000);
|
||||
}
|
||||
}
|
||||
|
@ -566,7 +566,7 @@ adv_scsi_cmd(xs)
|
|||
} else {
|
||||
|
||||
/* Polled requests can't be queued for later. */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* If there are jobs in the queue, run them first.
|
||||
|
@ -598,7 +598,7 @@ adv_scsi_cmd(xs)
|
|||
* then we can't allow it to sleep
|
||||
*/
|
||||
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((ccb = adv_get_ccb(sc, flags)) == NULL) {
|
||||
/*
|
||||
* If we can't queue, we lose.
|
||||
|
@ -666,13 +666,13 @@ adv_scsi_cmd(xs)
|
|||
if (flags & SCSI_DATA_UIO) {
|
||||
error = bus_dmamap_load_uio(dmat,
|
||||
ccb->dmamap_xfer, (struct uio *) xs->data,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif /* TFS */
|
||||
{
|
||||
error = bus_dmamap_load(dmat,
|
||||
ccb->dmamap_xfer, xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
if (error) {
|
||||
|
@ -692,7 +692,7 @@ adv_scsi_cmd(xs)
|
|||
}
|
||||
bus_dmamap_sync(dmat, ccb->dmamap_xfer, 0,
|
||||
ccb->dmamap_xfer->dm_mapsize,
|
||||
(flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(flags & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
|
||||
|
@ -734,7 +734,7 @@ adv_scsi_cmd(xs)
|
|||
/*
|
||||
* Usually return SUCCESSFULLY QUEUED
|
||||
*/
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return (SUCCESSFULLY_QUEUED);
|
||||
|
||||
/*
|
||||
|
@ -799,7 +799,7 @@ adv_poll(sc, xs, count)
|
|||
/* timeouts are in msec, so we loop in 1000 usec cycles */
|
||||
while (count) {
|
||||
adv_intr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return (0);
|
||||
delay(1000); /* only happens in boot so ok */
|
||||
count--;
|
||||
|
@ -907,8 +907,8 @@ adv_narrow_isr_callback(sc, qdonep)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, ccb->dmamap_xfer, 0,
|
||||
ccb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ?
|
||||
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, ccb->dmamap_xfer);
|
||||
}
|
||||
if ((ccb->flags & CCB_ALLOC) == 0) {
|
||||
|
@ -977,6 +977,6 @@ adv_narrow_isr_callback(sc, qdonep)
|
|||
|
||||
|
||||
adv_free_ccb(sc, ccb);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: adw.c,v 1.11 1999/09/11 15:34:45 dante Exp $ */
|
||||
/* $NetBSD: adw.c,v 1.12 1999/09/30 23:04:40 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Generic driver for the Advanced Systems Inc. SCSI controllers
|
||||
|
@ -278,7 +278,7 @@ adw_get_ccb(sc, flags)
|
|||
TAILQ_REMOVE(&sc->sc_free_ccb, ccb, chain);
|
||||
break;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
goto out;
|
||||
|
||||
tsleep(&sc->sc_free_ccb, PRIBIO, "adwccb", 0);
|
||||
|
@ -345,7 +345,7 @@ adw_start_ccbs(sc)
|
|||
TAILQ_REMOVE(&sc->sc_waiting_ccb, ccb, chain);
|
||||
splx(s);
|
||||
|
||||
if ((ccb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((ccb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(adw_timeout, ccb, (ccb->timeout * hz) / 1000);
|
||||
}
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ adw_scsi_cmd(xs)
|
|||
} else {
|
||||
|
||||
/* Polled requests can't be queued for later. */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* If there are jobs in the queue, run them first.
|
||||
|
@ -551,7 +551,7 @@ adw_scsi_cmd(xs)
|
|||
* then we can't allow it to sleep
|
||||
*/
|
||||
|
||||
if ((ccb = adw_get_ccb(sc, xs->flags)) == NULL) {
|
||||
if ((ccb = adw_get_ccb(sc, xs->xs_control)) == NULL) {
|
||||
/*
|
||||
* If we can't queue, we lose.
|
||||
*/
|
||||
|
@ -584,7 +584,7 @@ adw_scsi_cmd(xs)
|
|||
/*
|
||||
* Usually return SUCCESSFULLY QUEUED
|
||||
*/
|
||||
if ((xs->flags & SCSI_POLL) == 0)
|
||||
if ((xs->xs_control & XS_CTL_POLL) == 0)
|
||||
return (SUCCESSFULLY_QUEUED);
|
||||
|
||||
/*
|
||||
|
@ -648,18 +648,18 @@ adw_build_req(xs, ccb)
|
|||
* Map the DMA transfer.
|
||||
*/
|
||||
#ifdef TFS
|
||||
if (xs->flags & SCSI_DATA_UIO) {
|
||||
if (xs->xs_control & SCSI_DATA_UIO) {
|
||||
error = bus_dmamap_load_uio(dmat,
|
||||
ccb->dmamap_xfer, (struct uio *) xs->data,
|
||||
(xs->flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
(xs->xs_control & XS_CTL_NOSLEEP) ?
|
||||
BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif /* TFS */
|
||||
{
|
||||
error = bus_dmamap_load(dmat,
|
||||
ccb->dmamap_xfer, xs->data, xs->datalen, NULL,
|
||||
(xs->flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
(xs->xs_control & XS_CTL_NOSLEEP) ?
|
||||
BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
if (error) {
|
||||
|
@ -679,8 +679,8 @@ adw_build_req(xs, ccb)
|
|||
}
|
||||
bus_dmamap_sync(dmat, ccb->dmamap_xfer, 0,
|
||||
ccb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ?
|
||||
BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE);
|
||||
|
||||
/*
|
||||
* Build scatter-gather list.
|
||||
|
@ -794,7 +794,7 @@ adw_poll(sc, xs, count)
|
|||
/* timeouts are in msec, so we loop in 1000 usec cycles */
|
||||
while (count) {
|
||||
adw_intr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return (0);
|
||||
delay(1000); /* only happens in boot so ok */
|
||||
count--;
|
||||
|
@ -893,8 +893,8 @@ adw_wide_isr_callback(sc, scsiq)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, ccb->dmamap_xfer, 0,
|
||||
ccb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ?
|
||||
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, ccb->dmamap_xfer);
|
||||
}
|
||||
if ((ccb->flags & CCB_ALLOC) == 0) {
|
||||
|
@ -985,7 +985,7 @@ adw_wide_isr_callback(sc, scsiq)
|
|||
}
|
||||
|
||||
adw_free_ccb(sc, ccb);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: aha.c,v 1.23 1999/04/15 23:51:44 mjl Exp $ */
|
||||
/* $NetBSD: aha.c,v 1.24 1999/09/30 23:04:40 thorpej Exp $ */
|
||||
|
||||
#include "opt_ddb.h"
|
||||
|
||||
|
@ -569,7 +569,7 @@ aha_get_ccb(sc, flags)
|
|||
TAILQ_REMOVE(&sc->sc_free_ccb, ccb, chain);
|
||||
break;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
goto out;
|
||||
tsleep(&sc->sc_free_ccb, PRIBIO, "ahaccb", 0);
|
||||
}
|
||||
|
@ -695,7 +695,7 @@ aha_start_ccbs(sc)
|
|||
/* Tell the card to poll immediately. */
|
||||
bus_space_write_1(iot, ioh, AHA_CMD_PORT, AHA_START_SCSI);
|
||||
|
||||
if ((ccb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((ccb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(aha_timeout, ccb, (ccb->timeout * hz) / 1000);
|
||||
|
||||
++sc->sc_mbofull;
|
||||
|
@ -728,7 +728,7 @@ aha_done(sc, ccb)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, ccb->dmamap_xfer, 0,
|
||||
ccb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, ccb->dmamap_xfer);
|
||||
}
|
||||
|
@ -783,7 +783,7 @@ aha_done(sc, ccb)
|
|||
xs->resid = 0;
|
||||
}
|
||||
aha_free_ccb(sc, ccb);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
|
||||
/*
|
||||
|
@ -1199,7 +1199,7 @@ aha_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
/* Polled requests can't be queued for later. */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* If there are jobs in the queue, run them first.
|
||||
|
@ -1230,7 +1230,7 @@ aha_scsi_cmd(xs)
|
|||
* is from a buf (possibly from interrupt time)
|
||||
* then we can't allow it to sleep
|
||||
*/
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((ccb = aha_get_ccb(sc, flags)) == NULL) {
|
||||
/*
|
||||
* If we can't queue, we lose.
|
||||
|
@ -1261,7 +1261,7 @@ aha_scsi_cmd(xs)
|
|||
/*
|
||||
* Put all the arguments for the xfer in the ccb
|
||||
*/
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
ccb->opcode = AHA_RESET_CCB;
|
||||
ccb->scsi_cmd_length = 0;
|
||||
} else {
|
||||
|
@ -1277,17 +1277,17 @@ aha_scsi_cmd(xs)
|
|||
* Map the DMA transfer.
|
||||
*/
|
||||
#ifdef TFS
|
||||
if (flags & SCSI_DATA_UIO) {
|
||||
if (flags & XS_CTL_DATA_UIO) {
|
||||
error = bus_dmamap_load_uio(dmat,
|
||||
ccb->dmamap_xfer, (struct uio *)xs->data,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
error = bus_dmamap_load(dmat,
|
||||
ccb->dmamap_xfer, xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
|
@ -1306,7 +1306,7 @@ aha_scsi_cmd(xs)
|
|||
|
||||
bus_dmamap_sync(dmat, ccb->dmamap_xfer, 0,
|
||||
ccb->dmamap_xfer->dm_mapsize,
|
||||
(flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(flags & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
/*
|
||||
|
@ -1355,7 +1355,7 @@ aha_scsi_cmd(xs)
|
|||
* Usually return SUCCESSFULLY QUEUED
|
||||
*/
|
||||
SC_DEBUG(sc_link, SDEV_DB3, ("cmd_sent\n"));
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return (SUCCESSFULLY_QUEUED);
|
||||
|
||||
/*
|
||||
|
@ -1394,7 +1394,7 @@ aha_poll(sc, xs, count)
|
|||
*/
|
||||
if (bus_space_read_1(iot, ioh, AHA_INTR_PORT) & AHA_INTR_ANYINTR)
|
||||
aha_intr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return (0);
|
||||
delay(1000); /* only happens in boot so ok */
|
||||
count--;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: aic6360.c,v 1.62 1999/09/26 08:14:57 enami Exp $ */
|
||||
/* $NetBSD: aic6360.c,v 1.63 1999/09/30 23:04:40 thorpej Exp $ */
|
||||
|
||||
#include "opt_ddb.h"
|
||||
#ifdef DDB
|
||||
|
@ -502,7 +502,7 @@ aic_get_acb(sc, flags)
|
|||
s = splbio();
|
||||
|
||||
while ((acb = sc->free_list.tqh_first) == NULL &&
|
||||
(flags & SCSI_NOSLEEP) == 0)
|
||||
(flags & XS_CTL_NOSLEEP) == 0)
|
||||
tsleep(&sc->free_list, PRIBIO, "aicacb", 0);
|
||||
if (acb) {
|
||||
TAILQ_REMOVE(&sc->free_list, acb, chain);
|
||||
|
@ -552,7 +552,7 @@ aic_scsi_cmd(xs)
|
|||
AIC_CMDS(("[0x%x, %d]->%d ", (int)xs->cmd->opcode, xs->cmdlen,
|
||||
sc_link->scsipi_scsi.target));
|
||||
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((acb = aic_get_acb(sc, flags)) == NULL) {
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
return TRY_AGAIN_LATER;
|
||||
|
@ -562,7 +562,7 @@ aic_scsi_cmd(xs)
|
|||
acb->xs = xs;
|
||||
acb->timeout = xs->timeout;
|
||||
|
||||
if (xs->flags & SCSI_RESET) {
|
||||
if (xs->xs_control & XS_CTL_RESET) {
|
||||
acb->flags |= ACB_RESET;
|
||||
acb->scsipi_cmd_length = 0;
|
||||
acb->data_length = 0;
|
||||
|
@ -582,7 +582,7 @@ aic_scsi_cmd(xs)
|
|||
|
||||
splx(s);
|
||||
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return SUCCESSFULLY_QUEUED;
|
||||
|
||||
/* Not allowed to use interrupts, use polling instead */
|
||||
|
@ -628,7 +628,7 @@ aic_poll(sc, xs, count)
|
|||
*/
|
||||
if ((bus_space_read_1(iot, ioh, DMASTAT) & INTSTAT) != 0)
|
||||
aicintr(sc);
|
||||
if ((xs->flags & ITSDONE) != 0)
|
||||
if ((xs->xs_status & XS_STS_DONE) != 0)
|
||||
return 0;
|
||||
delay(1000);
|
||||
count--;
|
||||
|
@ -889,7 +889,7 @@ aic_done(sc, acb)
|
|||
}
|
||||
}
|
||||
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
|
||||
#if AIC_DEBUG
|
||||
if ((aic_debug & AIC_SHOWMISC) != 0) {
|
||||
|
@ -914,7 +914,7 @@ aic_done(sc, acb)
|
|||
} else
|
||||
aic_dequeue(sc, acb);
|
||||
|
||||
aic_free_acb(sc, acb, xs->flags);
|
||||
aic_free_acb(sc, acb, xs->xs_control);
|
||||
ti->cmds++;
|
||||
scsipi_done(xs);
|
||||
}
|
||||
|
@ -1821,7 +1821,7 @@ loop:
|
|||
sc->sc_cleft = acb->scsipi_cmd_length;
|
||||
|
||||
/* On our first connection, schedule a timeout. */
|
||||
if ((acb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((acb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(aic_timeout, acb,
|
||||
(acb->timeout * hz) / 1000);
|
||||
|
||||
|
@ -2122,7 +2122,7 @@ aic_show_scsi_cmd(acb)
|
|||
int i;
|
||||
|
||||
scsi_print_addr(sc_link);
|
||||
if ((acb->xs->flags & SCSI_RESET) == 0) {
|
||||
if ((acb->xs->xs_control & XS_CTL_RESET) == 0) {
|
||||
for (i = 0; i < acb->scsipi_cmd_length; i++) {
|
||||
if (i)
|
||||
printf(",");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: aic7xxx.c,v 1.36 1999/09/21 01:04:44 danw Exp $ */
|
||||
/* $NetBSD: aic7xxx.c,v 1.37 1999/09/30 23:04:40 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Generic driver for the aic7xxx based adaptec SCSI controllers
|
||||
|
@ -295,7 +295,6 @@ restart_sequencer(ahc)
|
|||
/*
|
||||
* convert FreeBSD's SCSI symbols to NetBSD's
|
||||
*/
|
||||
#define SCSI_NOMASK SCSI_POLL
|
||||
#define opennings openings
|
||||
#endif
|
||||
|
||||
|
@ -874,7 +873,7 @@ ahc_run_waiting_queues(ahc)
|
|||
scb->flags ^= SCB_ASSIGNEDQ|SCB_ACTIVE;
|
||||
|
||||
AHC_OUTB(ahc, QINFIFO, scb->position);
|
||||
if (!(scb->xs->flags & SCSI_NOMASK)) {
|
||||
if (!(scb->xs->xs_control & XS_CTL_POLL)) {
|
||||
timeout(ahc_timeout, (caddr_t)scb,
|
||||
(scb->xs->timeout * hz) / 1000);
|
||||
}
|
||||
|
@ -934,7 +933,7 @@ ahc_run_waiting_queues(ahc)
|
|||
|
||||
/* Queue the command */
|
||||
AHC_OUTB(ahc, QINFIFO, scb->position);
|
||||
if (!(scb->xs->flags & SCSI_NOMASK)) {
|
||||
if (!(scb->xs->xs_control & XS_CTL_POLL)) {
|
||||
timeout(ahc_timeout, (caddr_t)scb,
|
||||
(scb->xs->timeout * hz) / 1000);
|
||||
}
|
||||
|
@ -2020,8 +2019,8 @@ ahc_done(ahc, scb)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(ahc->sc_dt, scb->dmamap_xfer, 0,
|
||||
scb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ?
|
||||
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(ahc->sc_dt, scb->dmamap_xfer);
|
||||
}
|
||||
/*
|
||||
|
@ -2063,7 +2062,7 @@ ahc_done(ahc, scb)
|
|||
* (SCSI_ERR_OK in FreeBSD), we don't have to care this case.
|
||||
*/
|
||||
#endif
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
#ifdef AHC_TAGENABLE
|
||||
if(xs->cmd->opcode == INQUIRY && xs->error == XS_NOERROR)
|
||||
{
|
||||
|
@ -2100,7 +2099,7 @@ ahc_done(ahc, scb)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
ahc_free_scb(ahc, scb, xs->flags);
|
||||
ahc_free_scb(ahc, scb, xs->xs_control);
|
||||
scsipi_done(xs);
|
||||
|
||||
#if defined(__NetBSD__) /* XXX */
|
||||
|
@ -2555,7 +2554,7 @@ ahc_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
/* determine safety of software queueing */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* Handle situations where there's already entries in the
|
||||
|
@ -2588,15 +2587,7 @@ ahc_scsi_cmd(xs)
|
|||
* is from a buf (possibly from interrupt time)
|
||||
* then we can't allow it to sleep
|
||||
*/
|
||||
flags = xs->flags;
|
||||
if (flags & ITSDONE) {
|
||||
printf("%s: Already done?", ahc_name(ahc));
|
||||
xs->flags &= ~ITSDONE;
|
||||
}
|
||||
if (!(flags & INUSE)) {
|
||||
printf("%s: Not in use?", ahc_name(ahc));
|
||||
xs->flags |= INUSE;
|
||||
}
|
||||
flags = xs->xs_control;
|
||||
if (!(scb = ahc_get_scb(ahc, flags))) {
|
||||
#if defined(__NetBSD__) /* XXX */
|
||||
/*
|
||||
|
@ -2633,7 +2624,7 @@ ahc_scsi_cmd(xs)
|
|||
|
||||
SC_DEBUG(xs->sc_link, SDEV_DB3, ("start scb(%p)\n", scb));
|
||||
scb->xs = xs;
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
scb->flags |= SCB_DEVICE_RESET|SCB_IMMED;
|
||||
scb->control |= MK_MESSAGE;
|
||||
}
|
||||
|
@ -2686,7 +2677,7 @@ ahc_scsi_cmd(xs)
|
|||
#if defined(__NetBSD__)
|
||||
error = bus_dmamap_load(ahc->sc_dt, scb->dmamap_xfer,
|
||||
xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
if (error) {
|
||||
if (error == EFBIG) {
|
||||
|
@ -2702,7 +2693,7 @@ ahc_scsi_cmd(xs)
|
|||
return (COMPLETE);
|
||||
}
|
||||
bus_dmamap_sync(ahc->sc_dt, scb->dmamap_xfer, 0,
|
||||
scb->dmamap_xfer->dm_mapsize, (flags & SCSI_DATA_IN) ?
|
||||
scb->dmamap_xfer->dm_mapsize, (flags & XS_CTL_DATA_IN) ?
|
||||
BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE);
|
||||
/*
|
||||
* Load the hardware scatter/gather map with the contents
|
||||
|
@ -2831,7 +2822,7 @@ ahc_scsi_cmd(xs)
|
|||
AHC_OUTB(ahc, QINFIFO, scb->position);
|
||||
unpause_sequencer(ahc, /*unpause_always*/FALSE);
|
||||
scb->flags |= SCB_ACTIVE;
|
||||
if (!(flags & SCSI_NOMASK)) {
|
||||
if (!(flags & XS_CTL_POLL)) {
|
||||
timeout(ahc_timeout, (caddr_t)scb,
|
||||
(xs->timeout * hz) / 1000);
|
||||
}
|
||||
|
@ -2842,7 +2833,7 @@ ahc_scsi_cmd(xs)
|
|||
STAILQ_INSERT_TAIL(&ahc->waiting_scbs, scb, links);
|
||||
ahc_run_waiting_queues(ahc);
|
||||
}
|
||||
if (!(flags & SCSI_NOMASK)) {
|
||||
if (!(flags & XS_CTL_POLL)) {
|
||||
splx(s);
|
||||
return (SUCCESSFULLY_QUEUED);
|
||||
}
|
||||
|
@ -2852,12 +2843,12 @@ ahc_scsi_cmd(xs)
|
|||
SC_DEBUG(xs->sc_link, SDEV_DB3, ("cmd_poll\n"));
|
||||
do {
|
||||
if (ahc_poll(ahc, xs->timeout)) {
|
||||
if (!(xs->flags & SCSI_SILENT))
|
||||
if (!(xs->xs_control & XS_CTL_SILENT))
|
||||
printf("cmd fail\n");
|
||||
ahc_timeout(scb);
|
||||
break;
|
||||
}
|
||||
} while (!(xs->flags & ITSDONE)); /* a non command complete intr */
|
||||
} while (!(xs->xs_status & XS_STS_DONE));
|
||||
splx(s);
|
||||
return (COMPLETE);
|
||||
}
|
||||
|
@ -3013,7 +3004,7 @@ ahc_get_scb(ahc, flags)
|
|||
}
|
||||
#endif
|
||||
else {
|
||||
if (!(flags & SCSI_NOSLEEP)) {
|
||||
if (!(flags & XS_CTL_NOSLEEP)) {
|
||||
tsleep((caddr_t)&ahc->free_scbs, PRIBIO,
|
||||
"ahcscb", 0);
|
||||
continue;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: dpt.c,v 1.5 1999/09/30 17:15:54 ad Exp $ */
|
||||
/* $NetBSD: dpt.c,v 1.6 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
|
||||
|
@ -70,7 +70,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: dpt.c,v 1.5 1999/09/30 17:15:54 ad Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: dpt.c,v 1.6 1999/09/30 23:04:41 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -694,7 +694,7 @@ dpt_alloc_ccb(sc, flg)
|
|||
TAILQ_REMOVE(&sc->sc_free_ccb, ccb, ccb_chain);
|
||||
break;
|
||||
}
|
||||
if ((flg & SCSI_NOSLEEP) != 0) {
|
||||
if ((flg & XS_CTL_NOSLEEP) != 0) {
|
||||
splx(s);
|
||||
return (NULL);
|
||||
}
|
||||
|
@ -732,7 +732,7 @@ dpt_done_ccb(sc, ccb)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, ccb->ccb_dmamap_xfer, 0,
|
||||
ccb->ccb_dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, ccb->ccb_dmamap_xfer);
|
||||
}
|
||||
|
@ -782,7 +782,7 @@ dpt_done_ccb(sc, ccb)
|
|||
|
||||
/* Free up the CCB and mark the command as done */
|
||||
dpt_free_ccb(sc, ccb);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
|
||||
/*
|
||||
|
@ -811,7 +811,7 @@ dpt_scsi_cmd(xs)
|
|||
bus_dma_tag_t dmat;
|
||||
|
||||
sc_link = xs->sc_link;
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
sc = sc_link->adapter_softc;
|
||||
dmat = sc->sc_dmat;
|
||||
fromqueue = 0;
|
||||
|
@ -838,13 +838,13 @@ dpt_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
/* XXX we can't reset devices just yet */
|
||||
if ((flags & SCSI_RESET) != 0) {
|
||||
if ((flags & XS_CTL_RESET) != 0) {
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
return (COMPLETE);
|
||||
}
|
||||
|
||||
/* Polled requests can't be queued for later */
|
||||
dontqueue = flags & SCSI_POLL;
|
||||
dontqueue = flags & XS_CTL_POLL;
|
||||
|
||||
/* If there are jobs in the queue, run them first */
|
||||
if (TAILQ_FIRST(&sc->sc_queue) != NULL) {
|
||||
|
@ -911,8 +911,8 @@ dpt_scsi_cmd(xs)
|
|||
cp->cp_identify = 1;
|
||||
cp->cp_autosense = 1;
|
||||
cp->cp_nocache = ((ccb->ccb_flg & CCB_SYNC) != 0);
|
||||
cp->cp_datain = ((flags & SCSI_DATA_IN) != 0);
|
||||
cp->cp_dataout = ((flags & SCSI_DATA_OUT) != 0);
|
||||
cp->cp_datain = ((flags & XS_CTL_DATA_IN) != 0);
|
||||
cp->cp_dataout = ((flags & XS_CTL_DATA_OUT) != 0);
|
||||
cp->cp_interpret = (sc->sc_hbaid[sc_link->scsipi_scsi.channel] ==
|
||||
sc_link->scsipi_scsi.target);
|
||||
|
||||
|
@ -923,10 +923,10 @@ dpt_scsi_cmd(xs)
|
|||
sg = ccb->ccb_sg;
|
||||
seg = 0;
|
||||
#ifdef TFS
|
||||
if (flags & SCSI_DATA_UIO) {
|
||||
if (flags & XS_CTL_DATA_UIO) {
|
||||
error = bus_dmamap_load_uio(dmat,
|
||||
ccb->ccb_dmamap_xfer, (struct uio *)xs->data,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif /*TFS */
|
||||
|
@ -934,7 +934,7 @@ dpt_scsi_cmd(xs)
|
|||
error = bus_dmamap_load(dmat,
|
||||
ccb->ccb_dmamap_xfer,
|
||||
xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
|
@ -952,7 +952,7 @@ dpt_scsi_cmd(xs)
|
|||
|
||||
bus_dmamap_sync(dmat, ccb->ccb_dmamap_xfer, 0,
|
||||
ccb->ccb_dmamap_xfer->dm_mapsize,
|
||||
(flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(flags & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: mb89352.c,v 1.3 1999/03/14 16:14:54 minoura Exp $ */
|
||||
/* $NetBSD: mb89352.c,v 1.4 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
/* NecBSD: mb89352.c,v 1.4 1998/03/14 07:31:20 kmatsuda Exp */
|
||||
|
||||
#ifdef DDB
|
||||
|
@ -446,7 +446,7 @@ spc_get_acb(sc, flags)
|
|||
s = splbio();
|
||||
|
||||
while ((acb = sc->free_list.tqh_first) == NULL &&
|
||||
(flags & SCSI_NOSLEEP) == 0)
|
||||
(flags & XS_CTL_NOSLEEP) == 0)
|
||||
tsleep(&sc->free_list, PRIBIO, "spcacb", 0);
|
||||
if (acb) {
|
||||
TAILQ_REMOVE(&sc->free_list, acb, chain);
|
||||
|
@ -496,7 +496,7 @@ spc_scsi_cmd(xs)
|
|||
SPC_CMDS(("[0x%x, %d]->%d ", (int)xs->cmd->opcode, xs->cmdlen,
|
||||
sc_link->scsipi_scsi.target));
|
||||
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((acb = spc_get_acb(sc, flags)) == NULL) {
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
return TRY_AGAIN_LATER;
|
||||
|
@ -506,7 +506,7 @@ spc_scsi_cmd(xs)
|
|||
acb->xs = xs;
|
||||
acb->timeout = xs->timeout;
|
||||
|
||||
if (xs->flags & SCSI_RESET) {
|
||||
if (xs->xs_control & XS_CTL_RESET) {
|
||||
acb->flags |= ACB_RESET;
|
||||
acb->scsipi_cmd_length = 0;
|
||||
acb->data_length = 0;
|
||||
|
@ -536,7 +536,7 @@ spc_scsi_cmd(xs)
|
|||
|
||||
splx(s);
|
||||
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return SUCCESSFULLY_QUEUED;
|
||||
|
||||
/* Not allowed to use interrupts, use polling instead */
|
||||
|
@ -582,7 +582,7 @@ spc_poll(sc, xs, count)
|
|||
*/
|
||||
if (bus_space_read_1(iot, ioh, INTS) != 0)
|
||||
spcintr(sc);
|
||||
if ((xs->flags & ITSDONE) != 0)
|
||||
if ((xs->xs_status & XS_STS_DONE) != 0)
|
||||
return 0;
|
||||
delay(1000);
|
||||
count--;
|
||||
|
@ -881,7 +881,7 @@ spc_done(sc, acb)
|
|||
}
|
||||
}
|
||||
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
|
||||
#if SPC_DEBUG
|
||||
if ((spc_debug & SPC_SHOWMISC) != 0) {
|
||||
|
@ -906,7 +906,7 @@ spc_done(sc, acb)
|
|||
} else
|
||||
spc_dequeue(sc, acb);
|
||||
|
||||
spc_free_acb(sc, acb, xs->flags);
|
||||
spc_free_acb(sc, acb, xs->xs_control);
|
||||
ti->cmds++;
|
||||
scsipi_done(xs);
|
||||
}
|
||||
|
@ -1806,7 +1806,7 @@ loop:
|
|||
sc->sc_cleft = acb->scsipi_cmd_length;
|
||||
|
||||
/* On our first connection, schedule a timeout. */
|
||||
if ((acb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((acb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(spc_timeout, acb, (acb->timeout * hz) / 1000);
|
||||
|
||||
sc->sc_state = SPC_CONNECTED;
|
||||
|
@ -2106,7 +2106,7 @@ spc_show_scsi_cmd(acb)
|
|||
int i;
|
||||
|
||||
scsi_print_addr(sc_link);
|
||||
if ((acb->xs->flags & SCSI_RESET) == 0) {
|
||||
if ((acb->xs->xs_control & XS_CTL_RESET) == 0) {
|
||||
for (i = 0; i < acb->scsipi_cmd_length; i++) {
|
||||
if (i)
|
||||
printf(",");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ncr5380sbc.c,v 1.30 1998/12/05 19:43:53 mjacob Exp $ */
|
||||
/* $NetBSD: ncr5380sbc.c,v 1.31 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995 David Jones, Gordon W. Ross
|
||||
|
@ -602,17 +602,17 @@ ncr5380_scsi_cmd(xs)
|
|||
int s, rv, i, flags;
|
||||
|
||||
sc = xs->sc_link->adapter_softc;
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
|
||||
if (sc->sc_flags & NCR5380_FORCE_POLLING)
|
||||
flags |= SCSI_POLL;
|
||||
flags |= XS_CTL_POLL;
|
||||
|
||||
if (flags & SCSI_DATA_UIO)
|
||||
if (flags & XS_CTL_DATA_UIO)
|
||||
panic("ncr5380: scsi data uio requested");
|
||||
|
||||
s = splbio();
|
||||
|
||||
if (flags & SCSI_POLL) {
|
||||
if (flags & XS_CTL_POLL) {
|
||||
/* Terminate any current command. */
|
||||
sr = sc->sc_current;
|
||||
if (sr) {
|
||||
|
@ -647,14 +647,14 @@ new:
|
|||
sr->sr_dma_hand = NULL;
|
||||
sr->sr_dataptr = xs->data;
|
||||
sr->sr_datalen = xs->datalen;
|
||||
sr->sr_flags = (flags & SCSI_POLL) ? SR_IMMED : 0;
|
||||
sr->sr_flags = (flags & XS_CTL_POLL) ? SR_IMMED : 0;
|
||||
sr->sr_status = -1; /* no value */
|
||||
sc->sc_ncmds++;
|
||||
rv = SUCCESSFULLY_QUEUED;
|
||||
|
||||
NCR_TRACE("scsipi_cmd: new sr=0x%x\n", (long)sr);
|
||||
|
||||
if (flags & SCSI_POLL) {
|
||||
if (flags & XS_CTL_POLL) {
|
||||
/* Force this new command to be next. */
|
||||
sc->sc_rr = i;
|
||||
}
|
||||
|
@ -670,9 +670,9 @@ new:
|
|||
(long) sc->sc_current);
|
||||
}
|
||||
|
||||
if (flags & SCSI_POLL) {
|
||||
if (flags & XS_CTL_POLL) {
|
||||
/* Make sure ncr5380_sched() finished it. */
|
||||
if ((xs->flags & ITSDONE) == 0)
|
||||
if ((xs->xs_status & XS_STS_DONE) == 0)
|
||||
panic("ncr5380_scsi_cmd: poll didn't finish");
|
||||
rv = COMPLETE;
|
||||
}
|
||||
|
@ -804,7 +804,7 @@ finish:
|
|||
sc->sc_ncmds--;
|
||||
|
||||
/* Tell common SCSI code it is done. */
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
|
||||
sc->sc_state = NCR_IDLE;
|
||||
|
@ -989,7 +989,7 @@ next_job:
|
|||
ncr5380_show_scsi_cmd(xs);
|
||||
}
|
||||
#endif
|
||||
if (xs->flags & SCSI_RESET) {
|
||||
if (xs->xs_control & XS_CTL_RESET) {
|
||||
NCR_TRACE("sched: cmd=reset, sr=0x%x\n", (long)sr);
|
||||
/* Not an error, so do not set NCR_ABORTING */
|
||||
sc->sc_msgpriq |= SEND_DEV_RESET;
|
||||
|
@ -997,7 +997,7 @@ next_job:
|
|||
}
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if ((xs->flags & (SCSI_DATA_IN | SCSI_DATA_OUT)) == 0) {
|
||||
if ((xs->xs_control & (XS_CTL_DATA_IN | XS_CTL_DATA_OUT)) == 0) {
|
||||
if (sc->sc_dataptr) {
|
||||
printf("%s: ptr but no data in/out flags?\n",
|
||||
sc->sc_dev.dv_xname);
|
||||
|
@ -1524,7 +1524,8 @@ success:
|
|||
* DISCONNECT #
|
||||
*
|
||||
* We may send these messages in prioritized order:
|
||||
* BUS DEVICE RESET # if SCSI_RESET & xs->flags (or in weird sits.)
|
||||
* BUS DEVICE RESET # if XS_CTL_RESET & xs->xs_control (or in
|
||||
* weird sits.)
|
||||
* MESSAGE PARITY ERROR par. err. during MSGI
|
||||
* MESSAGE REJECT If we get a message we don't know how to handle
|
||||
* ABORT # send on errors
|
||||
|
@ -2087,7 +2088,7 @@ ncr5380_data_xfer(sc, phase)
|
|||
}
|
||||
|
||||
/* Validate expected phase (data_in or data_out) */
|
||||
expected_phase = (xs->flags & SCSI_DATA_OUT) ?
|
||||
expected_phase = (xs->xs_control & XS_CTL_DATA_OUT) ?
|
||||
PHASE_DATA_OUT : PHASE_DATA_IN;
|
||||
if (phase != expected_phase) {
|
||||
printf("%s: data phase error\n", sc->sc_dev.dv_xname);
|
||||
|
@ -2439,7 +2440,7 @@ ncr5380_show_scsi_cmd(xs)
|
|||
u_char *b = (u_char *) xs->cmd;
|
||||
int i = 0;
|
||||
|
||||
if ( ! ( xs->flags & SCSI_RESET ) ) {
|
||||
if ( ! ( xs->xs_control & XS_CTL_RESET ) ) {
|
||||
printf("si(%d:%d:%d)-",
|
||||
xs->sc_link->scsipi_scsi.scsibus,
|
||||
xs->sc_link->scsipi_scsi.target,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ncr53c9x.c,v 1.35 1999/09/22 03:31:23 mhitch Exp $ */
|
||||
/* $NetBSD: ncr53c9x.c,v 1.36 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -504,7 +504,7 @@ ncr53c9x_select(sc, ecb)
|
|||
* expecting to come back due to an interrupt, because it is
|
||||
* always possible that the interrupt may never happen.
|
||||
*/
|
||||
if ((ecb->xs->flags & SCSI_POLL) == 0)
|
||||
if ((ecb->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(ncr53c9x_timeout, ecb,
|
||||
(ecb->timeout * hz) / 1000);
|
||||
|
||||
|
@ -601,7 +601,7 @@ ncr53c9x_get_ecb(sc, flags)
|
|||
s = splbio();
|
||||
|
||||
while ((ecb = sc->free_list.tqh_first) == NULL &&
|
||||
(flags & SCSI_NOSLEEP) == 0)
|
||||
(flags & XS_CTL_NOSLEEP) == 0)
|
||||
tsleep(&sc->free_list, PRIBIO, "especb", 0);
|
||||
if (ecb) {
|
||||
TAILQ_REMOVE(&sc->free_list, ecb, chain);
|
||||
|
@ -634,7 +634,7 @@ ncr53c9x_scsi_cmd(xs)
|
|||
NCR_CMDS(("[0x%x, %d]->%d ", (int)xs->cmd->opcode, xs->cmdlen,
|
||||
sc_link->scsipi_scsi.target));
|
||||
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((ecb = ncr53c9x_get_ecb(sc, flags)) == NULL)
|
||||
return (TRY_AGAIN_LATER);
|
||||
|
||||
|
@ -642,7 +642,7 @@ ncr53c9x_scsi_cmd(xs)
|
|||
ecb->xs = xs;
|
||||
ecb->timeout = xs->timeout;
|
||||
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
ecb->flags |= ECB_RESET;
|
||||
ecb->clen = 0;
|
||||
ecb->dleft = 0;
|
||||
|
@ -662,7 +662,7 @@ ncr53c9x_scsi_cmd(xs)
|
|||
|
||||
splx(s);
|
||||
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return (SUCCESSFULLY_QUEUED);
|
||||
|
||||
/* Not allowed to use interrupts, use polling instead */
|
||||
|
@ -693,7 +693,7 @@ ncr53c9x_poll(sc, xs, count)
|
|||
if (NCR_READ_REG(sc, NCR_STAT) & NCRSTAT_INT)
|
||||
ncr53c9x_intr(sc);
|
||||
#endif
|
||||
if ((xs->flags & ITSDONE) != 0)
|
||||
if ((xs->xs_status & XS_STS_DONE) != 0)
|
||||
return (0);
|
||||
if (sc->sc_state == NCR_IDLE) {
|
||||
NCR_TRACE(("[ncr53c9x_poll: rescheduling] "));
|
||||
|
@ -822,7 +822,7 @@ ncr53c9x_done(sc, ecb)
|
|||
}
|
||||
}
|
||||
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
|
||||
#ifdef NCR53C9X_DEBUG
|
||||
if (ncr53c9x_debug & NCR_SHOWMISC) {
|
||||
|
@ -849,7 +849,7 @@ ncr53c9x_done(sc, ecb)
|
|||
} else
|
||||
ncr53c9x_dequeue(sc, ecb);
|
||||
|
||||
ncr53c9x_free_ecb(sc, ecb, xs->flags);
|
||||
ncr53c9x_free_ecb(sc, ecb, xs->xs_control);
|
||||
ti->cmds++;
|
||||
scsipi_done(xs);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: uha.c,v 1.21 1998/12/09 08:47:20 thorpej Exp $ */
|
||||
/* $NetBSD: uha.c,v 1.22 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
#undef UHADEBUG
|
||||
#ifdef DDB
|
||||
|
@ -323,7 +323,7 @@ uha_get_mscp(sc, flags)
|
|||
TAILQ_REMOVE(&sc->sc_free_mscp, mscp, chain);
|
||||
break;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
goto out;
|
||||
tsleep(&sc->sc_free_mscp, PRIBIO, "uhamsc", 0);
|
||||
}
|
||||
|
@ -380,7 +380,7 @@ uha_done(sc, mscp)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, mscp->dmamap_xfer, 0,
|
||||
mscp->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, mscp->dmamap_xfer);
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ uha_done(sc, mscp)
|
|||
xs->resid = 0;
|
||||
}
|
||||
uha_free_mscp(sc, mscp);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
|
||||
/*
|
||||
|
@ -481,7 +481,7 @@ uha_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
/* Polled requests can't be queued for later. */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* If there are jobs in the queue, run them first.
|
||||
|
@ -512,7 +512,7 @@ uha_scsi_cmd(xs)
|
|||
* is from a buf (possibly from interrupt time)
|
||||
* then we can't allow it to sleep
|
||||
*/
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((mscp = uha_get_mscp(sc, flags)) == NULL) {
|
||||
/*
|
||||
* If we can't queue, we lose.
|
||||
|
@ -543,7 +543,7 @@ uha_scsi_cmd(xs)
|
|||
/*
|
||||
* Put all the arguments for the xfer in the mscp
|
||||
*/
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
mscp->opcode = UHA_SDR;
|
||||
mscp->ca = 0x01;
|
||||
} else {
|
||||
|
@ -571,14 +571,14 @@ uha_scsi_cmd(xs)
|
|||
if (flags & SCSI_DATA_UIO) {
|
||||
error = bus_dmamap_load_uio(dmat,
|
||||
mscp->dmamap_xfer, (struct uio *)xs->data,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif /*TFS */
|
||||
{
|
||||
error = bus_dmamap_load(dmat,
|
||||
mscp->dmamap_xfer, xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
|
@ -597,7 +597,7 @@ uha_scsi_cmd(xs)
|
|||
|
||||
bus_dmamap_sync(dmat, mscp->dmamap_xfer, 0,
|
||||
mscp->dmamap_xfer->dm_mapsize,
|
||||
(flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(flags & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
/*
|
||||
|
@ -636,7 +636,7 @@ uha_scsi_cmd(xs)
|
|||
/*
|
||||
* Usually return SUCCESSFULLY QUEUED
|
||||
*/
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return (SUCCESSFULLY_QUEUED);
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: seagate.c,v 1.33 1999/03/19 05:42:00 cgd Exp $ */
|
||||
/* $NetBSD: seagate.c,v 1.34 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* ST01/02, Future Domain TMC-885, TMC-950 SCSI driver
|
||||
|
@ -563,12 +563,7 @@ sea_scsi_cmd(xs)
|
|||
|
||||
SC_DEBUG(sc_link, SDEV_DB2, ("sea_scsi_cmd\n"));
|
||||
|
||||
flags = xs->flags;
|
||||
if ((flags & (ITSDONE|INUSE)) != INUSE) {
|
||||
printf("%s: done or not in use?\n", sea->sc_dev.dv_xname);
|
||||
xs->flags &= ~ITSDONE;
|
||||
xs->flags |= INUSE;
|
||||
}
|
||||
flags = xs->xs_control;
|
||||
if ((scb = sea_get_scb(sea, flags)) == NULL) {
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
return TRY_AGAIN_LATER;
|
||||
|
@ -576,7 +571,7 @@ sea_scsi_cmd(xs)
|
|||
scb->flags = SCB_ACTIVE;
|
||||
scb->xs = xs;
|
||||
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
/*
|
||||
* Try to send a reset command to the card.
|
||||
* XXX Not implemented.
|
||||
|
@ -603,7 +598,7 @@ sea_scsi_cmd(xs)
|
|||
/*
|
||||
* Usually return SUCCESSFULLY QUEUED
|
||||
*/
|
||||
if ((flags & SCSI_POLL) == 0) {
|
||||
if ((flags & XS_CTL_POLL) == 0) {
|
||||
timeout(sea_timeout, scb, (xs->timeout * hz) / 1000);
|
||||
splx(s);
|
||||
return SUCCESSFULLY_QUEUED;
|
||||
|
@ -657,7 +652,7 @@ sea_get_scb(sea, flags)
|
|||
sea->sc_dev.dv_xname);
|
||||
break;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
break;
|
||||
tsleep(&sea->free_list, PRIBIO, "seascb", 0);
|
||||
}
|
||||
|
@ -843,7 +838,7 @@ sea_timeout(arg)
|
|||
scb->flags |= SCB_ABORTED;
|
||||
sea_abort(sea, scb);
|
||||
/* 2 secs for the abort */
|
||||
if ((xs->flags & SCSI_POLL) == 0)
|
||||
if ((xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(sea_timeout, scb, 2 * hz);
|
||||
}
|
||||
|
||||
|
@ -1212,8 +1207,8 @@ sea_done(sea, scb)
|
|||
if (scb->flags & SCB_ERROR)
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
}
|
||||
xs->flags |= ITSDONE;
|
||||
sea_free_scb(sea, scb, xs->flags);
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
sea_free_scb(sea, scb, xs->xs_control);
|
||||
scsipi_done(xs);
|
||||
}
|
||||
|
||||
|
@ -1234,7 +1229,7 @@ sea_poll(sea, xs, count)
|
|||
if (!main_running)
|
||||
sea_main();
|
||||
splx(s);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return 0;
|
||||
delay(1000);
|
||||
count--;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: uha_isa.c,v 1.17 1998/08/15 10:10:51 mycroft Exp $ */
|
||||
/* $NetBSD: uha_isa.c,v 1.18 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -301,7 +301,7 @@ u14_start_mbox(sc, mscp)
|
|||
else
|
||||
bus_space_write_1(iot, ioh, U14_LINT, U14_OGMFULL);
|
||||
|
||||
if ((mscp->xs->flags & SCSI_POLL) == 0)
|
||||
if ((mscp->xs->xs_control & XS_CTL_POLL) == 0)
|
||||
timeout(uha_timeout, mscp, (mscp->timeout * hz) / 1000);
|
||||
}
|
||||
|
||||
|
@ -326,7 +326,7 @@ u14_poll(sc, xs, count)
|
|||
*/
|
||||
if (bus_space_read_1(iot, ioh, U14_SINT) & U14_SDIP)
|
||||
u14_intr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return (0);
|
||||
delay(1000);
|
||||
count--;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: wds.c,v 1.38 1998/12/09 08:37:50 thorpej Exp $ */
|
||||
/* $NetBSD: wds.c,v 1.39 1999/09/30 23:04:41 thorpej Exp $ */
|
||||
|
||||
#include "opt_ddb.h"
|
||||
|
||||
|
@ -695,7 +695,7 @@ wds_get_scb(sc, flags)
|
|||
}
|
||||
continue;
|
||||
}
|
||||
if ((flags & SCSI_NOSLEEP) != 0)
|
||||
if ((flags & XS_CTL_NOSLEEP) != 0)
|
||||
goto out;
|
||||
tsleep(&sc->sc_free_scb, PRIBIO, "wdsscb", 0);
|
||||
}
|
||||
|
@ -855,8 +855,8 @@ wds_done(sc, scb, stat)
|
|||
if (xs->datalen) {
|
||||
bus_dmamap_sync(dmat, scb->dmamap_xfer, 0,
|
||||
scb->dmamap_xfer->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_POSTREAD :
|
||||
BUS_DMASYNC_POSTWRITE);
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ?
|
||||
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(dmat, scb->dmamap_xfer);
|
||||
}
|
||||
if (xs->error == XS_NOERROR) {
|
||||
|
@ -946,7 +946,7 @@ wds_done(sc, scb, stat)
|
|||
} /* XS_NOERROR */
|
||||
|
||||
wds_free_scb(sc, scb);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
scsipi_done(xs);
|
||||
|
||||
/*
|
||||
|
@ -1102,7 +1102,7 @@ wds_inquire_setup_information(sc)
|
|||
|
||||
sc->sc_maxsegs = 1;
|
||||
|
||||
scb = wds_get_scb(sc, SCSI_NOSLEEP);
|
||||
scb = wds_get_scb(sc, XS_CTL_NOSLEEP);
|
||||
if (scb == 0)
|
||||
panic("wds_inquire_setup_information: no scb available");
|
||||
|
||||
|
@ -1178,7 +1178,7 @@ wds_scsi_cmd(xs)
|
|||
struct iovec *iovp;
|
||||
#endif
|
||||
|
||||
if (xs->flags & SCSI_RESET) {
|
||||
if (xs->xs_control & XS_CTL_RESET) {
|
||||
/* XXX Fix me! */
|
||||
printf("%s: reset!\n", sc->sc_dev.dv_xname);
|
||||
wds_init(sc, 1);
|
||||
|
@ -1198,7 +1198,7 @@ wds_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
/* Polled requests can't be queued for later. */
|
||||
dontqueue = xs->flags & SCSI_POLL;
|
||||
dontqueue = xs->xs_control & XS_CTL_POLL;
|
||||
|
||||
/*
|
||||
* If there are jobs in the queue, run them first.
|
||||
|
@ -1224,7 +1224,7 @@ wds_scsi_cmd(xs)
|
|||
}
|
||||
|
||||
get_scb:
|
||||
flags = xs->flags;
|
||||
flags = xs->xs_control;
|
||||
if ((scb = wds_get_scb(sc, flags)) == NULL) {
|
||||
/*
|
||||
* If we can't queue, we lose.
|
||||
|
@ -1252,7 +1252,7 @@ wds_scsi_cmd(xs)
|
|||
scb->xs = xs;
|
||||
scb->timeout = xs->timeout;
|
||||
|
||||
if (xs->flags & SCSI_DATA_UIO) {
|
||||
if (xs->xs_control & XS_CTL_DATA_UIO) {
|
||||
/* XXX Fix me! */
|
||||
/* Let's not worry about UIO. There isn't any code for the *
|
||||
* non-SG boards anyway! */
|
||||
|
@ -1272,23 +1272,23 @@ wds_scsi_cmd(xs)
|
|||
/* NOTE: cmd.write may be OK as 0x40 (disable direction checking)
|
||||
* on boards other than the WD-7000V-ASE. Need this for the ASE:
|
||||
*/
|
||||
scb->cmd.write = (xs->flags & SCSI_DATA_IN) ? 0x80 : 0x00;
|
||||
scb->cmd.write = (xs->xs_control & XS_CTL_DATA_IN) ? 0x80 : 0x00;
|
||||
|
||||
if (xs->datalen) {
|
||||
sg = scb->scat_gath;
|
||||
seg = 0;
|
||||
#ifdef TFS
|
||||
if (flags & SCSI_DATA_UIO) {
|
||||
if (flags & XS_CTL_DATA_UIO) {
|
||||
error = bus_Dmamap_load_uio(dmat,
|
||||
scb->dmamap_xfer, (struct uio *)xs->data,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
} else
|
||||
#endif /* TFS */
|
||||
{
|
||||
error = bus_dmamap_load(dmat,
|
||||
scb->dmamap_xfer, xs->data, xs->datalen, NULL,
|
||||
(flags & SCSI_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
(flags & XS_CTL_NOSLEEP) ? BUS_DMA_NOWAIT :
|
||||
BUS_DMA_WAITOK);
|
||||
}
|
||||
|
||||
|
@ -1307,7 +1307,7 @@ wds_scsi_cmd(xs)
|
|||
|
||||
bus_dmamap_sync(dmat, scb->dmamap_xfer, 0,
|
||||
scb->dmamap_xfer->dm_mapsize,
|
||||
(flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(flags & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
if (sc->sc_maxsegs > 1) {
|
||||
|
@ -1354,7 +1354,7 @@ wds_scsi_cmd(xs)
|
|||
ltophys(0, scb->cmd.link);
|
||||
|
||||
/* XXX Do we really want to do this? */
|
||||
if (flags & SCSI_POLL) {
|
||||
if (flags & XS_CTL_POLL) {
|
||||
/* Will poll card, await result. */
|
||||
bus_space_write_1(sc->sc_iot, sc->sc_ioh, WDS_HCR, WDSH_DRQEN);
|
||||
scb->flags |= SCB_POLLED;
|
||||
|
@ -1368,7 +1368,7 @@ wds_scsi_cmd(xs)
|
|||
wds_queue_scb(sc, scb);
|
||||
splx(s);
|
||||
|
||||
if ((flags & SCSI_POLL) == 0)
|
||||
if ((flags & XS_CTL_POLL) == 0)
|
||||
return SUCCESSFULLY_QUEUED;
|
||||
|
||||
if (wds_poll(sc, xs, scb->timeout)) {
|
||||
|
@ -1449,7 +1449,7 @@ wds_poll(sc, xs, count)
|
|||
*/
|
||||
if (bus_space_read_1(iot, ioh, WDS_STAT) & WDSS_IRQ)
|
||||
wdsintr(sc);
|
||||
if (xs->flags & ITSDONE)
|
||||
if (xs->xs_status & XS_STS_DONE)
|
||||
return 0;
|
||||
delay(1000); /* only happens in boot so ok */
|
||||
count--;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: isp_pci.c,v 1.41 1999/07/05 20:28:11 mjacob Exp $ */
|
||||
/* $NetBSD: isp_pci.c,v 1.42 1999/09/30 23:04:42 thorpej Exp $ */
|
||||
/* release_6_5_99 */
|
||||
/*
|
||||
* PCI specific probe and attach routines for Qlogic ISP SCSI adapters.
|
||||
|
@ -663,7 +663,7 @@ isp_pci_dmasetup(isp, xs, rq, iptrp, optr)
|
|||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
if (xs->flags & SCSI_DATA_IN) {
|
||||
if (xs->xs_control & XS_CTL_DATA_IN) {
|
||||
drq = REQFLAG_DATA_IN;
|
||||
} else {
|
||||
drq = REQFLAG_DATA_OUT;
|
||||
|
@ -678,7 +678,8 @@ isp_pci_dmasetup(isp, xs, rq, iptrp, optr)
|
|||
rq->req_flags |= drq;
|
||||
}
|
||||
error = bus_dmamap_load(pci->pci_dmat, dmap, xs->data, xs->datalen,
|
||||
NULL, xs->flags & SCSI_NOSLEEP ? BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
NULL, xs->xs_control & XS_CTL_NOSLEEP ?
|
||||
BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
if (error) {
|
||||
XS_SETERR(xs, HBA_BOTCH);
|
||||
return (CMD_COMPLETE);
|
||||
|
@ -733,7 +734,7 @@ isp_pci_dmasetup(isp, xs, rq, iptrp, optr)
|
|||
|
||||
dmasync:
|
||||
bus_dmamap_sync(pci->pci_dmat, dmap, 0, dmap->dm_mapsize,
|
||||
(xs->flags & SCSI_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
(xs->xs_control & XS_CTL_DATA_IN) ? BUS_DMASYNC_PREREAD :
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
||||
mbxsync:
|
||||
|
@ -763,7 +764,7 @@ isp_pci_dmateardown(isp, xs, handle)
|
|||
bus_dmamap_t dmap = pci->pci_xfer_dmap[handle];
|
||||
|
||||
bus_dmamap_sync(pci->pci_dmat, dmap, 0, dmap->dm_mapsize,
|
||||
xs->flags & SCSI_DATA_IN ?
|
||||
xs->xs_control & XS_CTL_DATA_IN ?
|
||||
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(pci->pci_dmat, dmap);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ncr.c,v 1.83 1999/08/19 00:43:45 matt Exp $ */
|
||||
/* $NetBSD: ncr.c,v 1.84 1999/09/30 23:04:42 thorpej Exp $ */
|
||||
|
||||
/**************************************************************************
|
||||
**
|
||||
|
@ -1518,7 +1518,7 @@ static int read_tekram_eeprom
|
|||
|
||||
#if 0
|
||||
static char ident[] =
|
||||
"\n$NetBSD: ncr.c,v 1.83 1999/08/19 00:43:45 matt Exp $\n";
|
||||
"\n$NetBSD: ncr.c,v 1.84 1999/09/30 23:04:42 thorpej Exp $\n";
|
||||
#endif
|
||||
|
||||
static const u_long ncr_version = NCR_VERSION * 11
|
||||
|
@ -4507,7 +4507,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
lcb_p lp;
|
||||
tcb_p tp = &np->target[xp->sc_link->scsipi_scsi.target];
|
||||
|
||||
int i, oldspl, segments, flags = xp->flags, pollmode;
|
||||
int i, oldspl, segments, flags = xp->xs_control, pollmode;
|
||||
u_char qidx, nego, idmsg, *msgptr;
|
||||
u_long msglen, msglen2;
|
||||
|
||||
|
@ -4520,7 +4520,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
**---------------------------------------------
|
||||
*/
|
||||
|
||||
if (flags & SCSI_RESET) {
|
||||
if (flags & XS_CTL_RESET) {
|
||||
OUTB (nc_scntl1, CRST);
|
||||
DELAY (1000);
|
||||
return(COMPLETE);
|
||||
|
@ -4536,7 +4536,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
if ((xp->sc_link->scsipi_scsi.target == np->myaddr ) ||
|
||||
(xp->sc_link->scsipi_scsi.target >= MAX_TARGET) ||
|
||||
(xp->sc_link->scsipi_scsi.lun >= MAX_LUN ) ||
|
||||
(flags & SCSI_DATA_UIO)) {
|
||||
(flags & XS_CTL_DATA_UIO)) {
|
||||
xp->error = XS_DRIVER_STUFFUP;
|
||||
return(COMPLETE);
|
||||
};
|
||||
|
@ -4578,7 +4578,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
if (DEBUG_FLAGS & DEBUG_TINY) {
|
||||
PRINT_ADDR(xp);
|
||||
printf ("CMD=%x F=%x A=%p L=%x ",
|
||||
cmd->opcode, (unsigned)xp->flags, xp->data,
|
||||
cmd->opcode, (unsigned)xp->xs_control, xp->data,
|
||||
(unsigned)xp->datalen);
|
||||
}
|
||||
|
||||
|
@ -4590,19 +4590,10 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
**--------------------------------------------
|
||||
*/
|
||||
|
||||
flags = xp->flags;
|
||||
if (!(flags & INUSE)) {
|
||||
printf("%s: ?INUSE?\n", ncr_name (np));
|
||||
xp->flags |= INUSE;
|
||||
};
|
||||
|
||||
if(flags & ITSDONE) {
|
||||
printf("%s: ?ITSDONE?\n", ncr_name (np));
|
||||
xp->flags &= ~ITSDONE;
|
||||
};
|
||||
flags = xp->xs_control;
|
||||
|
||||
if (xp->bp)
|
||||
flags |= (SCSI_NOSLEEP); /* just to be sure */
|
||||
flags |= (XS_CTL_ASYNC); /* just to be sure */
|
||||
|
||||
/*---------------------------------------------------
|
||||
**
|
||||
|
@ -4846,10 +4837,10 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
**----------------------------------------------------
|
||||
*/
|
||||
|
||||
if (flags & SCSI_DATA_IN) {
|
||||
if (flags & XS_CTL_DATA_IN) {
|
||||
cp->phys.header.savep = NCB_SCRIPT_PHYS (np, data_in);
|
||||
cp->phys.header.goalp = cp->phys.header.savep +20 +segments*16;
|
||||
} else if (flags & SCSI_DATA_OUT) {
|
||||
} else if (flags & XS_CTL_DATA_OUT) {
|
||||
cp->phys.header.savep = NCB_SCRIPT_PHYS (np, data_out);
|
||||
cp->phys.header.goalp = cp->phys.header.savep +20 +segments*16;
|
||||
} else {
|
||||
|
@ -4979,7 +4970,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
** and reenable interrupts
|
||||
*/
|
||||
#ifdef __NetBSD__
|
||||
pollmode = flags & SCSI_POLL;
|
||||
pollmode = flags & XS_CTL_POLL;
|
||||
#else
|
||||
pollmode = flags & SCSI_NOMASK;
|
||||
#endif
|
||||
|
@ -5004,7 +4995,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
|
||||
if (DEBUG_FLAGS & DEBUG_POLL) printf("P");
|
||||
|
||||
for (i=xp->timeout; i && !(xp->flags & ITSDONE);i--) {
|
||||
for (i=xp->timeout; i && !(xp->xs_status & XS_STS_DONE);i--) {
|
||||
if ((DEBUG_FLAGS & DEBUG_POLL) && (cp->host_status))
|
||||
printf ("%c", (cp->host_status & 0xf) + '0');
|
||||
DELAY (1000);
|
||||
|
@ -5014,7 +5005,7 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
/*
|
||||
** Abort if command not done.
|
||||
*/
|
||||
if (!(xp->flags & ITSDONE)) {
|
||||
if (!(xp->xs_status & XS_STS_DONE)) {
|
||||
printf ("%s: aborting job ...\n", ncr_name (np));
|
||||
OUTB (nc_istat, CABRT);
|
||||
DELAY (100000);
|
||||
|
@ -5022,13 +5013,13 @@ static INT32 ncr_start (struct scsipi_xfer * xp)
|
|||
ncr_exception (np);
|
||||
};
|
||||
|
||||
if (!(xp->flags & ITSDONE)) {
|
||||
if (!(xp->xs_status & XS_STS_DONE)) {
|
||||
printf ("%s: abortion failed at %x.\n",
|
||||
ncr_name (np), (unsigned) INL(nc_dsp));
|
||||
ncr_init (np, "timeout", HS_TIMEOUT);
|
||||
};
|
||||
|
||||
if (!(xp->flags & ITSDONE)) {
|
||||
if (!(xp->xs_status & XS_STS_DONE)) {
|
||||
cp-> host_status = HS_SEL_TIMEOUT;
|
||||
ncr_complete (np, cp);
|
||||
};
|
||||
|
@ -5216,7 +5207,7 @@ void ncr_complete (ncb_p np, ccb_p cp)
|
|||
tp->bytes += xp->datalen;
|
||||
tp->transfers ++;
|
||||
#ifndef __NetBSD__
|
||||
} else if (xp->flags & SCSI_ERR_OK) {
|
||||
} else if (xp->xs_control & SCSI_ERR_OK) {
|
||||
|
||||
/*
|
||||
** Not correct, but errors expected.
|
||||
|
@ -5274,7 +5265,7 @@ void ncr_complete (ncb_p np, ccb_p cp)
|
|||
xp->error = XS_TIMEOUT;
|
||||
}
|
||||
|
||||
xp->flags |= ITSDONE;
|
||||
xp->xs_status |= XS_STS_DONE;
|
||||
|
||||
/*
|
||||
** trace output
|
||||
|
@ -5310,7 +5301,7 @@ void ncr_complete (ncb_p np, ccb_p cp)
|
|||
/*
|
||||
** Free this ccb
|
||||
*/
|
||||
ncr_free_ccb (np, cp, xp->flags);
|
||||
ncr_free_ccb (np, cp, xp->xs_control);
|
||||
|
||||
/*
|
||||
** signal completion to generic driver.
|
||||
|
@ -7333,7 +7324,7 @@ static ccb_p ncr_get_ccb
|
|||
*/
|
||||
|
||||
while (cp->magic) {
|
||||
if (flags & SCSI_NOSLEEP) break;
|
||||
if (flags & XS_CTL_NOSLEEP) break;
|
||||
if (tsleep ((caddr_t)cp, PRIBIO|PCATCH, "ncr", 0))
|
||||
break;
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pcscp.c,v 1.4 1999/09/22 03:32:00 mhitch Exp $ */
|
||||
/* $NetBSD: pcscp.c,v 1.5 1999/09/30 23:04:42 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
|
||||
|
@ -574,7 +574,7 @@ pcscp_dma_setup(sc, addr, len, datain, dmasize)
|
|||
|
||||
error = bus_dmamap_load(esc->sc_dmat, dmap, *esc->sc_dmaaddr,
|
||||
*esc->sc_dmalen, NULL,
|
||||
sc->sc_nexus->xs->flags & SCSI_NOSLEEP ?
|
||||
sc->sc_nexus->xs->xs_control & XS_CTL_NOSLEEP ?
|
||||
BUS_DMA_NOWAIT : BUS_DMA_WAITOK);
|
||||
if (error) {
|
||||
printf("%s: unable to load dmamap, error = %d\n",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: isp_sbus.c,v 1.12 1999/05/27 14:22:28 pk Exp $ */
|
||||
/* $NetBSD: isp_sbus.c,v 1.13 1999/09/30 23:04:42 thorpej Exp $ */
|
||||
/* release_03_25_99 */
|
||||
/*
|
||||
* SBus specific probe and attach routines for Qlogic ISP SCSI adapters.
|
||||
|
@ -313,7 +313,7 @@ isp_sbus_dmasetup(isp, xs, rq, iptrp, optr)
|
|||
{
|
||||
struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp;
|
||||
bus_dmamap_t dmamap;
|
||||
int dosleep = (xs->flags & SCSI_NOSLEEP) != 0;
|
||||
int dosleep = (xs->xs_control & XS_CTL_NOSLEEP) != 0;
|
||||
|
||||
if (xs->datalen == 0) {
|
||||
rq->req_seg_count = 1;
|
||||
|
@ -339,11 +339,11 @@ isp_sbus_dmasetup(isp, xs, rq, iptrp, optr)
|
|||
}
|
||||
bus_dmamap_sync(sbc->sbus_dmatag, dmamap,
|
||||
dmamap->dm_segs[0].ds_addr, xs->datalen,
|
||||
(xs->flags & SCSI_DATA_IN)
|
||||
(xs->xs_control & XS_CTL_DATA_IN)
|
||||
? BUS_DMASYNC_PREREAD
|
||||
: BUS_DMASYNC_PREWRITE);
|
||||
|
||||
if (xs->flags & SCSI_DATA_IN) {
|
||||
if (xs->xs_control & XS_CTL_DATA_IN) {
|
||||
rq->req_flags |= REQFLAG_DATA_IN;
|
||||
} else {
|
||||
rq->req_flags |= REQFLAG_DATA_OUT;
|
||||
|
@ -376,7 +376,7 @@ isp_sbus_dmateardown(isp, xs, handle)
|
|||
}
|
||||
bus_dmamap_sync(sbc->sbus_dmatag, dmamap,
|
||||
dmamap->dm_segs[0].ds_addr, xs->datalen,
|
||||
(xs->flags & SCSI_DATA_IN)
|
||||
(xs->xs_control & XS_CTL_DATA_IN)
|
||||
? BUS_DMASYNC_POSTREAD
|
||||
: BUS_DMASYNC_POSTWRITE);
|
||||
bus_dmamap_unload(sbc->sbus_dmatag, dmamap);
|
||||
|
|
Loading…
Reference in New Issue