diff options
author | gibbs <gibbs@FreeBSD.org> | 2000-02-09 21:25:00 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 2000-02-09 21:25:00 +0000 |
commit | c8e218c3977b7f8b9986bea7155ad8310339c3da (patch) | |
tree | b31fc6c38957b551df880ad5384ce0f701d92020 /sys/dev/aic7xxx/aic7xxx.h | |
parent | 25d7550dee3f3ac00782166ee1b91bddd1074efa (diff) | |
download | FreeBSD-src-c8e218c3977b7f8b9986bea7155ad8310339c3da.zip FreeBSD-src-c8e218c3977b7f8b9986bea7155ad8310339c3da.tar.gz |
Kill the "unpause_always" argument to unpause_sequencer(). The reasons
for optimizing the unpause operation no-longer exist, and this is much
safer.
When restarting the sequencer, reconstitute the free SCB list on the card.
This deals with a single instruction gap between marking the SCB as free
and actually getting it onto the free list.
Reduce the number of transfer negotiations that occur. In the past, we
renegotiated after every reported check condition status. This ensures
that we catch devices that have unexpectidly reset. In this situation,
the target will always report the check condition before performing a
data-phase. The new behavior is to renegotiate for any check-condition where
the residual matches the orginal data-length of the command (including
0 length transffers). This avoids renegotiations during things like
variable tape block reads, where the check condition is reported only
to indicate the residual of the read.
Revamp the parity error detection logic. We now properly report and
handle injected parity errors in all phases. The old code used to hang
on message-in parity errors.
Correct the reporting of selection timeout errors to the XPT. When
a selection timeout occurs, only the currently selecting command
is flagged with SELTO status instead of aborting all currently active
commands to that target.
Fix flipped arguments in ahc_match_scb and in some of the callers of this
routine. I wish that gcc allowed you to request warnings for enums passed
as ints.
Make ahc_find_msg generically handle all message types.
Work around the target mode data-in wideodd bug in all non-U2 chips.
We can now do sync-wide target mode transfers in target mode across the
hole product line.
Use lastphase exclusively for handling timeouts. The current phase
doesn't take the bus free state into account.
Fix a bug in the timeout handler that could cause corruption of the
disconnected list.
When sending an embedded cdb to a target, ensure that we start on a
quad word boundary in the data-fifo. It seems that unaligned stores
do not work correctly.
Diffstat (limited to 'sys/dev/aic7xxx/aic7xxx.h')
-rw-r--r-- | sys/dev/aic7xxx/aic7xxx.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.h b/sys/dev/aic7xxx/aic7xxx.h index 53a756a..534f2e4 100644 --- a/sys/dev/aic7xxx/aic7xxx.h +++ b/sys/dev/aic7xxx/aic7xxx.h @@ -124,13 +124,14 @@ typedef enum { AHC_DT = 0x0800, /* Double Transition transfers */ AHC_NEW_TERMCTL = 0x1000, AHC_MULTI_FUNC = 0x2000, /* Multi-Function Twin Channel Device */ - AHC_AIC7770_FE = AHC_FENONE, - AHC_AIC7850_FE = AHC_SPIOCAP, + AHC_TARG_DMABUG = 0x4000, /* WideOdd Data-In bug in TMODE */ + AHC_AIC7770_FE = AHC_TARG_DMABUG, + AHC_AIC7850_FE = AHC_TARG_DMABUG|AHC_SPIOCAP, AHC_AIC7855_FE = AHC_AIC7850_FE, AHC_AIC7859_FE = AHC_AIC7850_FE|AHC_ULTRA, AHC_AIC7860_FE = AHC_AIC7859_FE, - AHC_AIC7870_FE = AHC_FENONE, - AHC_AIC7880_FE = AHC_ULTRA, + AHC_AIC7870_FE = AHC_TARG_DMABUG, + AHC_AIC7880_FE = AHC_TARG_DMABUG|AHC_ULTRA, AHC_AIC7890_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS |AHC_SG_PRELOAD|AHC_MULTI_TID|AHC_HS_MAILBOX |AHC_NEW_TERMCTL, @@ -571,6 +572,7 @@ struct ahc_softc { bus_dma_tag_t shared_data_dmat; bus_dmamap_t shared_data_dmamap; bus_addr_t shared_data_busaddr; + bus_addr_t dma_bug_buf; /* Number of enabled target mode device on this card */ u_int enabled_luns; |