summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx/aic7xxx.reg
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1999-03-05 23:35:48 +0000
committergibbs <gibbs@FreeBSD.org>1999-03-05 23:35:48 +0000
commit399fca227c07db6ebbd4f852a6c928eb69d23ad1 (patch)
tree1a3a4e94551a7f6422c127d2ea97bed2b7ad4ba6 /sys/dev/aic7xxx/aic7xxx.reg
parent090e44812f2681bb34bd1ee498e9e05f8ee7610c (diff)
downloadFreeBSD-src-399fca227c07db6ebbd4f852a6c928eb69d23ad1.zip
FreeBSD-src-399fca227c07db6ebbd4f852a6c928eb69d23ad1.tar.gz
Keep track of negotiated transfer parameters for each initiator<->target
connection. Clean up support for devices featuring the multiple target SCSI ID feature. On aic7890/91/96/97 chips, we can now assume the target role on multiple target ids simultaneously. Although these chips also have sufficient instruction space to hold to support the initiator and target role at the same time, the initiator role is currently disabled as it will conflict (chip design restriction) with the multi-tid feature. I'll probably add a nob to enable the initiator (there-by disabling multi-tid) some time in the future. Return queue full or busy, depending on the tagged nature of the incoming request, if our command input queue fills up in host memeory. Deal with accept target I/O resource shortages. If we get an underrun on a transaction that wasn't supposed to transmit any data, don't attempt to print out the S/G list. The code would run until hitting a non-present page. (oops)
Diffstat (limited to 'sys/dev/aic7xxx/aic7xxx.reg')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.reg11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.reg b/sys/dev/aic7xxx/aic7xxx.reg
index 775c0e3..8a9c656 100644
--- a/sys/dev/aic7xxx/aic7xxx.reg
+++ b/sys/dev/aic7xxx/aic7xxx.reg
@@ -32,7 +32,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.reg,v 1.11 1998/12/17 00:06:52 gibbs Exp $
+ * $Id: aic7xxx.reg,v 1.12 1999/01/14 06:14:15 gibbs Exp $
*/
/*
@@ -882,7 +882,6 @@ scb {
}
SCB_CMDPTR {
alias SCB_TARGET_PHASES
- alias SCB_TARGET_ID /* Byte 2 */
bit TARGET_DATA_IN 0x1 /* In the second byte */
size 4
}
@@ -1267,7 +1266,7 @@ scratch_ram {
/*
* Kernel and sequencer offsets into the queue of
* incoming target mode command descriptors. The
- * queue is full when the ((KERNEL_TQINPOS - TQINPOS) == 1)
+ * queue is full when the KERNEL_TQINPOS == TQINPOS.
*/
KERNEL_TQINPOS {
size 1
@@ -1408,6 +1407,12 @@ const CMD_GROUP3_BYTE_DELTA -15
const CMD_GROUP4_BYTE_DELTA 4
const CMD_GROUP5_BYTE_DELTA 11
+const TCL_TARGET_SHIFT 4
+/* The update interval must be a power of 2 */
+const TQINFIFO_UPDATE_CNT 32
+
+const STATUS_BUSY 0x08
+const STATUS_QUEUE_FULL 0x28
/*
* Downloaded (kernel inserted) constants
OpenPOWER on IntegriCloud