Update for SCSPI changes.

This commit is contained in:
thorpej 1999-09-30 23:04:39 +00:00
parent 2b02403498
commit 63b8530b4e
19 changed files with 212 additions and 233 deletions

View File

@ -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--;

View File

@ -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--;

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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--;

View File

@ -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(",");

View File

@ -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;

View File

@ -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);
/*

View File

@ -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(",");

View File

@ -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,

View File

@ -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);
}

View File

@ -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);
/*

View File

@ -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--;

View File

@ -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--;

View File

@ -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--;

View File

@ -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);
}

View File

@ -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;
};

View File

@ -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",

View File

@ -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);