2 * Aic79xx register and scratch ram definitions.
4 * Copyright (c) 1994-2001 Justin T. Gibbs.
5 * Copyright (c) 2000-2002 Adaptec Inc.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions, and the following disclaimer,
13 * without modification.
14 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
15 * substantially similar to the "NO WARRANTY" disclaimer below
16 * ("Disclaimer") and any redistribution must be conditioned upon
17 * including a substantially similar Disclaimer requirement for further
18 * binary redistribution.
19 * 3. Neither the names of the above-listed copyright holders nor the names
20 * of any contributors may be used to endorse or promote products derived
21 * from this software without specific prior written permission.
23 * Alternatively, this software may be distributed under the terms of the
24 * GNU General Public License ("GPL") version 2 as published by the Free
25 * Software Foundation.
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
31 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
37 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
38 * POSSIBILITY OF SUCH DAMAGES.
42 VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#45 $"
45 * This file is processed by the aic7xxx_asm utility for use in assembling
46 * firmware for the aic79xx family of SCSI host adapters as well as to generate
47 * a C header file for use in the kernel portion of the Aic79xx driver.
50 /* Register window Modes */
58 #define MK_MODE(src, dst) ((src) | ((dst) << M_DST_SHIFT))
59 #define SET_MODE(src, dst) \
62 if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
63 mvi MK_MODE(src, dst) call set_mode_work_around; \
65 mvi MODE_PTR, MK_MODE(src, dst); \
68 #define TOGGLE_DFF_MODE \
69 if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
70 call toggle_dff_mode_work_around; \
72 xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); \
78 * Controls which of the 5, 512byte, address spaces should be used
79 * as the source and destination of any register accesses in our
90 const SRC_MODE_SHIFT 0
91 const DST_MODE_SHIFT 4
94 * Host Interrupt Status
111 * Sequencer Interrupt Code
113 register SEQINTCODE {
117 BAD_PHASE 1, /* unknown scsi bus phase */
118 SEND_REJECT, /* sending a message reject */
119 PROTO_VIOLATION, /* Protocol Violation */
120 NO_MATCH, /* no cmd match for reconnect */
121 IGN_WIDE_RES, /* Complex IGN Wide Res Msg */
123 * Returned to data phase
125 * transfer pointers to be
126 * recalculated from the
130 * The bus is ready for the
131 * host to perform another
132 * message transaction. This
133 * mechanism is used for things
134 * like sync/wide negotiation
135 * that require a kernel based
136 * message state engine.
138 BAD_STATUS, /* Bad status from target */
140 * Target attempted to write
141 * beyond the bounds of its
145 * Target completed command
146 * without honoring our ATN
147 * request to issue a message.
150 * The sequencer never saw
151 * the bus go free after
152 * either a command complete
153 * or disconnect message.
166 * Clear Host Interrupt
171 field CLRHWERRINT 0x80 /* Rev B or greater */
172 field CLRBRKADRINT 0x40
173 field CLRSWTMINT 0x20
174 field CLRSCSIINT 0x08
177 field CLRSPLTINT 0x01
187 field CIOACCESFAIL 0x40 /* Rev B or greater */
201 field CLRCIOPARERR 0x80
202 field CLRCIOACCESFAIL 0x40 /* Rev B or greater */
203 field CLRMPARERR 0x20
204 field CLRDPARERR 0x10
205 field CLRSQPARERR 0x08
206 field CLRILLOPCODE 0x04
207 field CLRDSCTMOUT 0x02
211 * Host Control Register
212 * Overall host control of the device.
217 field SEQ_RESET 0x80 /* Rev B or greater */
220 field SWTIMER_START_B 0x08 /* Rev B or greater */
224 field CHIPRSTACK 0x01
228 * Host New SCB Queue Offset
230 register HNSCB_QOFF {
237 * Host Empty SCB Queue Offset
239 register HESCB_QOFF {
247 register HS_MAILBOX {
250 mask HOST_TQINPOS 0x80 /* Boundary at either 0 or 128 */
254 * Sequencer Interupt Status
256 register SEQINTSTAT {
259 field SEQ_SWTMRTO 0x10
260 field SEQ_SEQINT 0x08
261 field SEQ_SCSIINT 0x04
262 field SEQ_PCIINT 0x02
263 field SEQ_SPLTINT 0x01
267 * Clear SEQ Interrupt
269 register CLRSEQINTSTAT {
272 field CLRSEQ_SWTMRTO 0x10
273 field CLRSEQ_SEQINT 0x08
274 field CLRSEQ_SCSIINT 0x04
275 field CLRSEQ_PCIINT 0x02
276 field CLRSEQ_SPLTINT 0x01
289 * SEQ New SCB Queue Offset
291 register SNSCB_QOFF {
299 * SEQ Empty SCB Queue Offset
301 register SESCB_QOFF {
308 * SEQ Done SCB Queue Offset
310 register SDSCB_QOFF {
318 * Queue Offset Control & Status
320 register QOFF_CTLSTA {
324 field EMPTY_SCB_AVAIL 0x80
325 field NEW_SCB_AVAIL 0x40
326 field SDSCB_ROLLOVR 0x20
327 field HS_MAILBOX_ACT 0x10
328 field SCB_QSIZE 0x0F {
351 field SWTMINTMASK 0x80
353 field SWTIMER_START 0x20
354 field AUTOCLRCMDINT 0x10
374 field DIRECTIONACK 0x04
376 field FIFOFLUSHACK 0x02
377 field DIRECTIONEN 0x01
381 * Device Space Command 0
383 register DSCOMMAND0 {
387 field CACHETHEN 0x80 /* Cache Threshold enable */
388 field DPARCKEN 0x40 /* Data Parity Check Enable */
389 field MPARCKEN 0x20 /* Memory Parity Check Enable */
390 field EXTREQLCK 0x10 /* External Request Lock */
391 field DISABLE_TWATE 0x02 /* Rev B or greater */
392 field CIOPARCKEN 0x01 /* Internal bus parity error enable */
402 field PRELOAD_AVAIL 0x80
403 field PKT_PRELOAD_AVAIL 0x40
414 register SG_CACHE_PRE {
418 field SG_ADDR_MASK 0xf8
423 register SG_CACHE_SHADOW {
427 field SG_ADDR_MASK 0xf8
430 field LAST_SEG_DONE 0x01
440 field RESET_HARB 0x80
441 field RETRY_SWEN 0x08
446 * Data Channel Host Address
456 * Host Overlay DMA Address
466 * Data Channel Host Count
476 * Host Overlay DMA Count
486 * Host Overlay DMA Enable
495 * Scatter/Gather Host Address
515 * Scatter/Gather Host Count
533 * Data FIFO Threshold
539 field WR_DFTHRSH 0x70 {
549 field RD_DFTHRSH 0x07 {
591 * Data Channel Receive Message 0
602 * CMC Recieve Message 0
613 * Overlay Recieve Message 0
615 register OVLYRXMSG0 {
624 * Relaxed Order Enable
639 * Data Channel Receive Message 1
649 * CMC Recieve Message 1
659 * Overlay Recieve Message 1
661 register OVLYRXMSG1 {
684 * Data Channel Receive Message 2
694 * CMC Recieve Message 2
704 * Overlay Recieve Message 2
706 register OVLYRXMSG2 {
714 * Outstanding Split Transactions
723 * Data Channel Receive Message 3
733 * CMC Recieve Message 3
743 * Overlay Recieve Message 3
745 register OVLYRXMSG3 {
760 field UNEXPSCIEN 0x20
761 field SPLTSMADIS 0x10
762 field SPLTSTADIS 0x08
769 * CMC Sequencer Byte Count
771 register CMCSEQBCNT {
778 * Overlay Sequencer Byte Count
780 register OVLYSEQBCNT {
787 * Data Channel Sequencer Byte Count
789 register DCHSEQBCNT {
797 * Data Channel Split Status 0
799 register DCHSPLTSTAT0 {
806 field SCDATBUCKET 0x10
807 field CNTNOTCMPLT 0x08
816 register CMCSPLTSTAT0 {
823 field SCDATBUCKET 0x10
824 field CNTNOTCMPLT 0x08
831 * Overlay Split Status 0
833 register OVLYSPLTSTAT0 {
840 field SCDATBUCKET 0x10
841 field CNTNOTCMPLT 0x08
848 * Data Channel Split Status 1
850 register DCHSPLTSTAT1 {
854 field RXDATABUCKET 0x01
860 register CMCSPLTSTAT1 {
864 field RXDATABUCKET 0x01
868 * Overlay Split Status 1
870 register OVLYSPLTSTAT1 {
874 field RXDATABUCKET 0x01
878 * S/G Receive Message 0
889 * S/G Receive Message 1
899 * S/G Receive Message 2
909 * S/G Receive Message 3
919 * Slave Split Out Address 0
921 register SLVSPLTOUTADR0 {
925 field LOWER_ADDR 0x7F
929 * Slave Split Out Address 1
931 register SLVSPLTOUTADR1 {
940 * Slave Split Out Address 2
942 register SLVSPLTOUTADR2 {
950 * Slave Split Out Address 3
952 register SLVSPLTOUTADR3 {
961 * SG Sequencer Byte Count
970 * Slave Split Out Attribute 0
972 register SLVSPLTOUTATTR0 {
976 field LOWER_BCNT 0xFF
980 * Slave Split Out Attribute 1
982 register SLVSPLTOUTATTR1 {
986 field CMPLT_DNUM 0xF8
987 field CMPLT_FNUM 0x07
991 * Slave Split Out Attribute 2
993 register SLVSPLTOUTATTR2 {
998 field CMPLT_BNUM 0xFF
1001 * S/G Split Status 0
1003 register SGSPLTSTAT0 {
1006 modes M_DFF0, M_DFF1
1010 field SCDATBUCKET 0x10
1011 field CNTNOTCMPLT 0x08
1014 field RXSPLTRSP 0x01
1018 * S/G Split Status 1
1020 register SGSPLTSTAT1 {
1023 modes M_DFF0, M_DFF1
1024 field RXDATABUCKET 0x01
1034 field TEST_GROUP 0xF0
1039 * Data FIFO 0 PCI Status
1041 register DF0PCISTAT {
1056 * Data FIFO 1 PCI Status
1058 register DF1PCISTAT {
1075 register SGPCISTAT {
1091 register CMCPCISTAT {
1106 * Overlay PCI Status
1108 register OVLYPCISTAT {
1122 * PCI Status for MSI Master DMA Transfer
1124 register MSIPCISTAT {
1131 field CLRPENDMSI 0x08
1137 * PCI Status for Target
1139 register TARGPCISTAT {
1151 * The last LQ Packet recieved
1157 modes M_DFF0, M_DFF1, M_SCSI
1162 * SCB offset for Target Mode SCB type information
1172 * SCB offset to the Two Byte tag identifier used for target mode.
1181 * Logical Unit Number Pointer
1182 * SCB offset to the LSB (little endian) of the lun field.
1191 * Data Length Pointer
1192 * SCB offset for the 4 byte data length field in target mode.
1194 register DATALENPTR {
1201 * Status Length Pointer
1202 * SCB offset to the two byte status field in target SCBs.
1204 register STATLENPTR {
1211 * Command Length Pointer
1212 * Scb offset for the CDB length field in initiator SCBs.
1214 register CMDLENPTR {
1221 * Task Attribute Pointer
1222 * Scb offset for the byte field specifying the attribute byte
1223 * to be used in command packets.
1232 * Task Management Flags Pointer
1233 * Scb offset for the byte field specifying the attribute flags
1234 * byte to be used in command packets.
1244 * Scb offset for the first byte in the CDB for initiator SCBs.
1253 * Queue Next Pointer
1254 * Scb offset for the 2 byte "next scb link".
1264 * Scb offset to the value to place in the SCSIID register
1265 * during target mode connections.
1274 * Command Aborted Byte Pointer
1275 * Offset to the SCB flags field that includes the
1276 * "SCB aborted" status bit.
1278 register ABRTBYTEPTR {
1285 * Command Aborted Bit Pointer
1286 * Bit offset in the SCB flags field for "SCB aborted" status.
1288 register ABRTBITPTR {
1297 register MAXCMDBYTES {
1306 register MAXCMD2RCV {
1315 register SHORTTHRESH {
1322 * Logical Unit Number Length
1323 * The length, in bytes, of the SCB lun field.
1333 * The size, in bytes, of the embedded CDB field in initator SCBs.
1343 * The maximum number of commands to issue during a
1344 * single packetized connection.
1353 * Maximum Command Counter
1354 * The number of commands already sent during this connection
1356 register MAXCMDCNT {
1363 * LQ Packet Reserved Bytes
1364 * The bytes to be sent in the currently reserved fileds
1365 * of all LQ packets.
1384 * Command Reserved 0
1385 * The byte to be sent for the reserved byte 0 of
1386 * outgoing command packets.
1395 * LQ Manager Control 0
1401 field LQITARGCLT 0xC0
1402 field LQIINITGCLT 0x30
1403 field LQ0TARGCLT 0x0C
1404 field LQ0INITGCLT 0x03
1408 * LQ Manager Control 1
1413 modes M_DFF0, M_DFF1, M_SCSI
1415 field SINGLECMD 0x02
1416 field ABORTPENDING 0x01
1420 * LQ Manager Control 2
1425 modes M_DFF0, M_DFF1, M_SCSI
1427 field LQICONTINUE 0x40
1428 field LQITOIDLE 0x20
1431 field LQOCONTINUE 0x04
1432 field LQOTOIDLE 0x02
1443 field GSBISTERR 0x40
1444 field GSBISTDONE 0x20
1445 field GSBISTRUN 0x10
1446 field OSBISTERR 0x04
1447 field OSBISTDONE 0x02
1448 field OSBISTRUN 0x01
1452 * SCSI Sequence Control0
1457 modes M_DFF0, M_DFF1, M_SCSI
1461 field FORCEBUSFREE 0x10
1472 field NTBISTERR 0x04
1473 field NTBISTDONE 0x02
1474 field NTBISTRUN 0x01
1478 * SCSI Sequence Control 1
1483 modes M_DFF0, M_DFF1, M_SCSI
1484 field MANUALCTL 0x40
1488 field ENAUTOATNP 0x02
1493 * SCSI Transfer Control 0
1501 field BIOSCANCELEN 0x10
1506 * SCSI Transfer Control 1
1512 field BITBUCKET 0x80
1522 * SCSI Transfer Control 2
1528 field AUTORSTDIS 0x10
1534 * SCSI Bus Initiator IDs
1535 * Bitmask of observed initiators on the bus.
1537 register BUSINITID {
1545 * Data Length Counters
1546 * Packet byte counter.
1551 modes M_DFF0, M_DFF1
1562 field FIFO1FREE 0x20
1563 field FIFO0FREE 0x10
1568 * SCSI Bus Target IDs
1569 * Bitmask of observed targets on the bus.
1571 register BUSTARGID {
1579 * SCSI Control Signal Out
1584 modes M_DFF0, M_DFF1, M_SCSI
1594 * Possible phases to write into SCSISIG0
1596 enum PHASE_MASK CDO|IOO|MSGO {
1599 P_DATAOUT_DT P_DATAOUT|MSGO,
1600 P_DATAIN_DT P_DATAIN|MSGO,
1604 P_MESGIN CDO|IOO|MSGO
1611 modes M_DFF0, M_DFF1, M_SCSI
1621 * Possible phases in SCSISIGI
1623 enum PHASE_MASK CDO|IOO|MSGO {
1626 P_DATAOUT_DT P_DATAOUT|MSGO,
1627 P_DATAIN_DT P_DATAIN|MSGO,
1631 P_MESGIN CDO|IOO|MSGO
1636 * Multiple Target IDs
1637 * Bitmask of ids to respond as a target.
1639 register MULTARGID {
1649 register SCSIPHASE {
1652 modes M_DFF0, M_DFF1, M_SCSI
1653 field STATUS_PHASE 0x20
1654 field COMMAND_PHASE 0x10
1655 field MSG_IN_PHASE 0x08
1656 field MSG_OUT_PHASE 0x04
1657 field DATA_PHASE_MASK 0x03 {
1658 DATA_OUT_PHASE 0x01,
1666 register SCSIDAT0_IMG {
1669 modes M_DFF0, M_DFF1, M_SCSI
1678 modes M_DFF0, M_DFF1, M_SCSI
1688 modes M_DFF0, M_DFF1, M_SCSI
1698 modes M_DFF0, M_DFF1, M_SCSI
1704 * Selection/Reselection ID
1705 * Upper four bits are the device id. The ONEBIT is set when the re/selecting
1706 * device did not set its own ID.
1711 modes M_DFF0, M_DFF1, M_SCSI
1712 field SELID_MASK 0xf0
1717 * SCSI Block Control
1718 * Controls Bus type and channel selection. SELWIDE allows for the
1719 * coexistence of 8bit and 16bit devices on a wide bus.
1724 modes M_DFF0, M_DFF1, M_SCSI
1725 field DIAGLEDEN 0x80
1726 field DIAGLEDON 0x40
1727 field ENAB40 0x08 /* LVD transceiver active */
1728 field ENAB20 0x04 /* SE/HVD transceiver active */
1735 register OPTIONMODE {
1739 field BIOSCANCTL 0x80
1740 field AUTOACKEN 0x40
1741 field BIASCANCTL 0x20
1742 field BUSFREEREV 0x10
1743 field ENDGFORMCHK 0x04
1744 field AUTO_MSGOUT_DE 0x02
1745 mask OPTIONMODE_DEFAULTS AUTO_MSGOUT_DE
1754 modes M_DFF0, M_DFF1, M_SCSI
1755 field TARGET 0x80 /* Board acting as target */
1756 field SELDO 0x40 /* Selection Done */
1757 field SELDI 0x20 /* Board has been selected */
1758 field SELINGO 0x10 /* Selection In Progress */
1759 field IOERR 0x08 /* LVD Tranceiver mode changed */
1760 field OVERRUN 0x04 /* SCSI Offset overrun detected */
1761 field SPIORDY 0x02 /* SCSI PIO Ready */
1762 field ARBDO 0x01 /* Arbitration Done Out */
1766 * Clear SCSI Interrupt 0
1767 * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0.
1772 modes M_DFF0, M_DFF1, M_SCSI
1775 field CLRSELINGO 0x10
1777 field CLROVERRUN 0x04
1778 field CLRSPIORDY 0x02
1783 * SCSI Interrupt Mode 0
1784 * Setting any bit will enable the corresponding function
1785 * in SIMODE0 to interrupt via the IRQ pin.
1793 field ENSELINGO 0x10
1795 field ENOVERRUN 0x04
1796 field ENSPIORDY 0x02
1806 modes M_DFF0, M_DFF1, M_SCSI
1813 field STRB2FAST 0x02
1818 * Clear SCSI Interrupt 1
1819 * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1.
1824 modes M_DFF0, M_DFF1, M_SCSI
1825 field CLRSELTIMEO 0x80
1827 field CLRSCSIRSTI 0x20
1828 field CLRBUSFREE 0x08
1829 field CLRSCSIPERR 0x04
1830 field CLRSTRB2FAST 0x02
1831 field CLRREQINIT 0x01
1840 modes M_DFF0, M_DFF1, M_SCSI
1841 field BUSFREETIME 0xc0 {
1846 field NONPACKREQ 0x20
1847 field EXP_ACTIVE 0x10 /* SCSI Expander Active */
1848 field BSYX 0x08 /* Busy Expander */
1849 field WIDE_RES 0x04 /* Modes 0 and 1 only */
1850 field SDONE 0x02 /* Modes 0 and 1 only */
1851 field DMADONE 0x01 /* Modes 0 and 1 only */
1855 * Clear SCSI Interrupt 2
1860 modes M_DFF0, M_DFF1, M_SCSI
1861 field CLRNONPACKREQ 0x20
1862 field CLRWIDE_RES 0x04 /* Modes 0 and 1 only */
1863 field CLRSDONE 0x02 /* Modes 0 and 1 only */
1864 field CLRDMADONE 0x01 /* Modes 0 and 1 only */
1868 * SCSI Interrupt Mode 2
1874 field ENWIDE_RES 0x04
1876 field ENDMADONE 0x01
1880 * Physical Error Diagnosis
1885 modes M_DFF0, M_DFF1, M_SCSI
1888 field PREVPHASE 0x20
1889 field PARITYERR 0x10
1892 field DGFORMERR 0x02
1897 * LQI Manager Current State
1911 modes M_DFF0, M_DFF1, M_SCSI
1915 * LQO Manager Current State
1924 * LQI Manager Status
1929 modes M_DFF0, M_DFF1, M_SCSI
1930 field LQIATNQAS 0x20
1933 field LQIBADLQT 0x04
1935 field LQIATNCMD 0x01
1939 * Clear LQI Interrupts 0
1941 register CLRLQIINT0 {
1944 modes M_DFF0, M_DFF1, M_SCSI
1945 field CLRLQIATNQAS 0x20
1946 field CLRLQICRCT1 0x10
1947 field CLRLQICRCT2 0x08
1948 field CLRLQIBADLQT 0x04
1949 field CLRLQIATNLQ 0x02
1950 field CLRLQIATNCMD 0x01
1954 * LQI Manager Interrupt Mode 0
1960 field ENLQIATNQASK 0x20
1961 field ENLQICRCT1 0x10
1962 field ENLQICRCT2 0x08
1963 field ENLQIBADLQT 0x04
1964 field ENLQIATNLQ 0x02
1965 field ENLQIATNCMD 0x01
1969 * LQI Manager Status 1
1974 modes M_DFF0, M_DFF1, M_SCSI
1975 field LQIPHASE_LQ 0x80
1976 field LQIPHASE_NLQ 0x40
1978 field LQICRCI_LQ 0x10
1979 field LQICRCI_NLQ 0x08
1980 field LQIBADLQI 0x04
1981 field LQIOVERI_LQ 0x02
1982 field LQIOVERI_NLQ 0x01
1986 * Clear LQI Manager Interrupts1
1988 register CLRLQIINT1 {
1991 modes M_DFF0, M_DFF1, M_SCSI
1992 field CLRLQIPHASE_LQ 0x80
1993 field CLRLQIPHASE_NLQ 0x40
1994 field CLRLIQABORT 0x20
1995 field CLRLQICRCI_LQ 0x10
1996 field CLRLQICRCI_NLQ 0x08
1997 field CLRLQIBADLQI 0x04
1998 field CLRLQIOVERI_LQ 0x02
1999 field CLRLQIOVERI_NLQ 0x01
2003 * LQI Manager Interrupt Mode 1
2009 field ENLQIPHASE_LQ 0x80
2010 field ENLQIPHASE_NLQ 0x40
2011 field ENLIQABORT 0x20
2012 field ENLQICRCI_LQ 0x10
2013 field ENLQICRCI_NLQ 0x08
2014 field ENLQIBADLQI 0x04
2015 field ENLQIOVERI_LQ 0x02
2016 field ENLQIOVERI_NLQ 0x01
2020 * LQI Manager Status 2
2025 modes M_DFF0, M_DFF1, M_SCSI
2026 field PACKETIZED 0x80
2027 field LQIPHASE_OUTPKT 0x40
2028 field LQIWORKONLQ 0x20
2029 field LQIWAITFIFO 0x10
2030 field LQISTOPPKT 0x08
2031 field LQISTOPLQ 0x04
2032 field LQISTOPCMD 0x02
2033 field LQIGSAVAIL 0x01
2042 modes M_DFF0, M_DFF1, M_SCSI
2043 field NTRAMPERR 0x02
2044 field OSRAMPERR 0x01
2048 * Clear SCSI Status 3
2053 modes M_DFF0, M_DFF1, M_SCSI
2054 field CLRNTRAMPERR 0x02
2055 field CLROSRAMPERR 0x01
2059 * SCSI Interrupt Mode 3
2065 field ENNTRAMPERR 0x02
2066 field ENOSRAMPERR 0x01
2070 * LQO Manager Status 0
2075 modes M_DFF0, M_DFF1, M_SCSI
2076 field LQOTARGSCBPERR 0x10
2077 field LQOSTOPT2 0x08
2079 field LQOATNPKT 0x02
2084 * Clear LQO Manager interrupt 0
2086 register CLRLQOINT0 {
2089 modes M_DFF0, M_DFF1, M_SCSI
2090 field CLRLQOTARGSCBPERR 0x10
2091 field CLRLQOSTOPT2 0x08
2092 field CLRLQOATNLQ 0x04
2093 field CLRLQOATNPKT 0x02
2094 field CLRLQOTCRC 0x01
2098 * LQO Manager Interrupt Mode 0
2104 field ENLQOTARGSCBPERR 0x10
2105 field ENLQOSTOPT2 0x08
2106 field ENLQOATNLQ 0x04
2107 field ENLQOATNPKT 0x02
2108 field ENLQOTCRC 0x01
2112 * LQO Manager Status 1
2117 modes M_DFF0, M_DFF1, M_SCSI
2118 field LQOINITSCBPERR 0x10
2119 field LQOSTOPI2 0x08
2120 field LQOBADQAS 0x04
2121 field LQOBUSFREE 0x02
2122 field LQOPHACHGINPKT 0x01
2126 * Clear LOQ Interrupt 1
2128 register CLRLQOINT1 {
2131 modes M_DFF0, M_DFF1, M_SCSI
2132 field CLRLQOINITSCBPERR 0x10
2133 field CLRLQOSTOPI2 0x08
2134 field CLRLQOBADQAS 0x04
2135 field CLRLQOBUSFREE 0x02
2136 field CLRLQOPHACHGINPKT 0x01
2140 * LQO Manager Interrupt Mode 1
2146 field ENLQOINITSCBPERR 0x10
2147 field ENLQOSTOPI2 0x08
2148 field ENLQOBADQAS 0x04
2149 field ENLQOBUSFREE 0x02
2150 field ENLQOPHACHGINPKT 0x01
2154 * LQO Manager Status 2
2159 modes M_DFF0, M_DFF1, M_SCSI
2161 field LQOWAITFIFO 0x10
2162 field LQOPHACHGOUTPKT 0x02 /* outside of packet boundaries. */
2163 field LQOSTOP0 0x01 /* Stopped after sending all packets */
2167 * Output Synchronizer Space Count
2169 register OS_SPACE_CNT {
2176 * SCSI Interrupt Mode 1
2177 * Setting any bit will enable the corresponding function
2178 * in SIMODE1 to interrupt via the IRQ pin.
2183 modes M_DFF0, M_DFF1, M_SCSI
2184 field ENSELTIMO 0x80
2185 field ENATNTARG 0x40
2186 field ENSCSIRST 0x20
2187 field ENPHASEMIS 0x10
2188 field ENBUSFREE 0x08
2189 field ENSCSIPERR 0x04
2190 field ENSTRB2FAST 0x02
2191 field ENREQINIT 0x01
2201 modes M_DFF0, M_DFF1, M_SCSI
2205 * Data FIFO SCSI Transfer Control
2207 register DFFSXFRCTL {
2210 modes M_DFF0, M_DFF1
2217 * Next SCSI Control Block
2229 register SEQINTSRC {
2232 modes M_DFF0, M_DFF1
2236 field CFG4ISTAT 0x08
2237 field CFG4TSTAT 0x04
2243 * Clear Arp Interrupts
2245 register CLRSEQINTSRC {
2248 modes M_DFF0, M_DFF1
2249 field CLRCTXTDONE 0x40
2250 field CLRSAVEPTRS 0x20
2251 field CLRCFG4DATA 0x10
2252 field CLRCFG4ISTAT 0x08
2253 field CLRCFG4TSTAT 0x04
2254 field CLRCFG4ICMD 0x02
2255 field CLRCFG4TCMD 0x01
2259 * SEQ Interrupt Enabled (Shared)
2264 modes M_DFF0, M_DFF1
2265 field ENCTXTDONE 0x40
2266 field ENSAVEPTRS 0x20
2267 field ENCFG4DATA 0x10
2268 field ENCFG4ISTAT 0x08
2269 field ENCFG4TSTAT 0x04
2270 field ENCFG4ICMD 0x02
2271 field ENCFG4TCMD 0x01
2275 * Current SCSI Control Block
2290 modes M_DFF0, M_DFF1
2291 field SHCNTNEGATIVE 0x40 /* Rev B or higher */
2292 field SHCNTMINUS1 0x20 /* Rev B or higher */
2293 field LASTSDONE 0x10
2295 field DLZERO 0x04 /* FIFO data ends on packet boundary. */
2296 field DATAINFIFO 0x02
2303 register CRCCONTROL {
2307 field CRCVALCHKEN 0x40
2318 field SEL_TXPLL_DEBUG 0x04
2322 * Data FIFO Queue Tag
2328 modes M_DFF0, M_DFF1
2332 * Last SCSI Control Block
2342 * SCSI I/O Cell Power-down Control
2348 field DISABLE_OE 0x80
2349 field PDN_IDIST 0x04
2350 field PDN_DIFFSENSE 0x01
2354 * Shaddow Host Address.
2360 modes M_DFF0, M_DFF1
2364 * Data Group CRC Interval.
2374 * Data Transfer Negotiation Address
2383 * Data Transfer Negotiation Data - Period Byte
2385 register NEGPERIOD {
2392 * Packetized CRC Interval
2402 * Data Transfer Negotiation Data - Offset Byte
2404 register NEGOFFSET {
2411 * Data Transfer Negotiation Data - PPR Options
2413 register NEGPPROPTS {
2417 field PPROPT_PACE 0x08
2418 field PPROPT_QAS 0x04
2419 field PPROPT_DT 0x02
2420 field PPROPT_IUT 0x01
2424 * Data Transfer Negotiation Data - Connection Options
2426 register NEGCONOPTS {
2431 field ENAUTOATNI 0x04
2432 field ENAUTOATNO 0x02
2437 * Negotiation Table Annex Column Index.
2449 field STSELSKIDDIS 0x40
2450 field CURFIFODEF 0x20
2451 field WIDERESEN 0x10
2452 field SDONEMSKDIS 0x08
2453 field DFFACTCLR 0x04
2454 field SHVALIDSTDIS 0x02
2455 field LSTSGCLRDIS 0x01
2458 const AHD_ANNEXCOL_PRECOMP 4
2459 const AHD_PRECOMP_MASK 0x07
2460 const AHD_PRECOMP_CUTBACK_17 0x04
2461 const AHD_PRECOMP_CUTBACK_29 0x06
2462 const AHD_PRECOMP_CUTBACK_37 0x07
2463 const AHD_PRECOMP_FASTSLEW 0x40
2464 const AHD_NUM_ANNEXCOLS 4
2467 * Negotiation Table Annex Data Port.
2476 * Initiator's Own Id.
2477 * The SCSI ID to use for Selection Out and seen during a reselection..
2486 * 960MHz Phase-Locked Loop Control 0
2488 register PLL960CTL0 {
2492 field PLL_VCOSEL 0x80
2495 field PLL_ENLUD 0x08
2496 field PLL_ENLPF 0x04
2498 field PLL_ENFBM 0x01
2511 * 960MHz Phase-Locked Loop Control 1
2513 register PLL960CTL1 {
2517 field PLL_CNTEN 0x80
2518 field PLL_CNTCLR 0x40
2523 * Expander Signature
2538 modes M_DFF0, M_DFF1
2551 * 960-MHz Phase-Locked Loop Test Count
2553 register PLL960CNT0 {
2561 * 400-MHz Phase-Locked Loop Control 0
2563 register PLL400CTL0 {
2567 field PLL_VCOSEL 0x80
2570 field PLL_ENLUD 0x08
2571 field PLL_ENLPF 0x04
2573 field PLL_ENFBM 0x01
2577 * Arbitration Fairness
2587 * 400-MHz Phase-Locked Loop Control 1
2589 register PLL400CTL1 {
2593 field PLL_CNTEN 0x80
2594 field PLL_CNTCLR 0x40
2599 * Arbitration Unfairness
2601 register UNFAIRNESS {
2609 * 400-MHz Phase-Locked Loop Test Count
2611 register PLL400CNT0 {
2625 modes M_DFF0, M_DFF1, M_CCHAN, M_SCSI
2629 * CMC SCB Array Count
2630 * Number of bytes to transfer between CMC SCB memory and SCBRAM.
2631 * Transfers must be 8byte aligned and sized.
2633 register CCSCBACNT {
2641 * SCB-Next Address Snooping logic. When an SCB is transferred to
2642 * the card, the next SCB address to be used by the CMC array can
2643 * be autoloaded from that transfer.
2645 register SCBAUTOPTR {
2649 field AUSCBPTR_EN 0x80
2650 field SCBPTR_ADDR 0x38
2651 field SCBPTR_OFF 0x07
2655 * CMC SG Ram Address Pointer
2660 modes M_DFF0, M_DFF1
2664 * CMC SCB RAM Address Pointer
2666 register CCSCBADDR {
2673 * CMC SCB Ram Back-up Address Pointer
2674 * Indicates the true stop location of transfers halted prior
2675 * to SCBHCNT going to 0.
2677 register CCSCBADR_BK {
2689 modes M_DFF0, M_DFF1
2691 field SG_CACHE_AVAIL 0x10
2693 field SG_FETCH_REQ 0x02
2694 field CCSGRESET 0x01
2704 field CCSCBDONE 0x80
2709 field CCSCBRESET 0x01
2715 register CMC_RAMBIST {
2719 field SG_ELEMENT_SIZE 0x80
2720 field SCBRAMBIST_FAIL 0x40
2721 field SG_BIST_FAIL 0x20
2722 field SG_BIST_EN 0x10
2723 field CMC_BUFFER_BIST_FAIL 0x02
2724 field CMC_BUFFER_BIST_EN 0x01
2728 * CMC SG RAM Data Port
2733 modes M_DFF0, M_DFF1
2737 * CMC SCB RAM Data Port
2756 * Flex DMA Byte Count
2768 register FLEXDMASTAT {
2772 field FLEXDMAERR 0x02
2773 field FLEXDMADONE 0x01
2777 * Flex DMA Data Port
2801 field FLXARBACK 0x80
2802 field FLXARBREQ 0x40
2810 * Serial EEPROM Address
2819 * Serial EEPROM Data
2829 * Serial EEPROM Status
2835 field INIT_DONE 0x80
2836 field SEEOPCODE 0x70
2837 field LDALTID_L 0x08
2838 field SEEARBACK 0x04
2844 * Serial EEPROM Control
2850 field SEEOPCODE 0x70 {
2855 * The following four commands use special
2856 * addresses for differentiation.
2860 mask SEEOP_EWEN 0x40
2861 mask SEEOP_WALL 0x40
2862 mask SEEOP_EWDS 0x40
2867 const SEEOP_ERAL_ADDR 0x80
2868 const SEEOP_EWEN_ADDR 0xC0
2869 const SEEOP_WRAL_ADDR 0x40
2870 const SEEOP_EWDS_ADDR 0x00
2882 * Data FIFO Write Address
2883 * Pointer to the next QWD location to be written to the data FIFO.
2889 modes M_DFF0, M_DFF1
2893 * DSP Filter Control
2895 register DSPFLTRCTL {
2899 field FLTRDISABLE 0x20
2900 field EDGESENSE 0x10
2901 field DSPFCNTSEL 0x0F
2905 * DSP Data Channel Control
2907 register DSPDATACTL {
2911 field BYPASSENAB 0x80
2913 field RCVROFFSTDIS 0x04
2914 field XMITOFFSTDIS 0x02
2918 * Data FIFO Read Address
2919 * Pointer to the next QWD location to be read from the data FIFO.
2925 modes M_DFF0, M_DFF1
2931 register DSPREQCTL {
2935 field MANREQCTL 0xC0
2936 field MANREQDLY 0x3F
2942 register DSPACKCTL {
2946 field MANACKCTL 0xC0
2947 field MANACKDLY 0x3F
2952 * Read/Write byte port into the data FIFO. The read and write
2953 * FIFO pointers increment with each read and write respectively
2959 modes M_DFF0, M_DFF1
2963 * DSP Channel Select
2965 register DSPSELECT {
2969 field AUTOINCEN 0x80
2976 * Write Bias Control
2978 register WRTBIASCTL {
2982 field AUTOXBCDIS 0x80
2983 field XMITMANVAL 0x3F
2986 const WRTBIASCTL_CPQ_DEFAULT 0x97
2989 * Receiver Bias Control
2991 register RCVRBIOSCTL {
2995 field AUTORBCDIS 0x80
2996 field RCVRMANVAL 0x3F
3000 * Write Bias Calculator
3002 register WRTBIASCALC {
3009 * Data FIFO Pointers
3010 * Contains the byte offset from DFWADDR and DWRADDR to the current
3011 * FIFO write/read locations.
3016 modes M_DFF0, M_DFF1
3020 * Receiver Bias Calculator
3022 register RCVRBIASCALC {
3029 * Data FIFO Debug Control
3034 modes M_DFF0, M_DFF1
3035 field DFF_CIO_WR_RDY 0x20
3036 field DFF_CIO_RD_RDY 0x10
3037 field DFF_DIR_ERR 0x08
3038 field DFF_RAMBIST_FAIL 0x04
3039 field DFF_RAMBIST_DONE 0x02
3040 field DFF_RAMBIST_EN 0x01
3044 * Data FIFO Backup Read Pointer
3045 * Contains the data FIFO address to be restored if the last
3046 * data accessed from the data FIFO was not transferred successfully.
3052 modes M_DFF0, M_DFF1
3065 * Data FIFO Space Count
3066 * Number of FIFO locations that are free.
3072 modes M_DFF0, M_DFF1
3076 * Data FIFO Byte Count
3077 * Number of filled FIFO locations.
3083 modes M_DFF0, M_DFF1
3087 * Sequencer Program Overlay Address.
3088 * Low address must be written prior to high address.
3098 * Sequencer Control 0
3099 * Error detection mode, speed configuration,
3100 * single step, breakpoints and program load.
3105 field PERRORDIS 0x80
3109 field BRKADRINTEN 0x08
3116 * Sequencer Control 1
3117 * Instruction RAM Diagnostics
3122 field OVRLAY_DATA_CHK 0x08
3123 field RAMBIST_DONE 0x04
3124 field RAMBIST_FAIL 0x02
3125 field RAMBIST_EN 0x01
3130 * Zero and Carry state of the ALU.
3140 * Sequencer Interrupt Control
3142 register SEQINTCTL {
3145 field INTVEC1DSL 0x80
3146 field INT1_CONTEXT 0x20
3147 field SCS_SEQ_INT1M1 0x10
3148 field SCS_SEQ_INT1M0 0x08
3154 * Sequencer RAM Data Port
3155 * Single byte window into the Sequencer Instruction Ram area starting
3156 * at the address specified by OVLYADDR. To write a full instruction word,
3157 * simply write four bytes in succession. OVLYADDR will increment after the
3158 * most significant instrution byte (the byte with the parity bit) is written.
3166 * Sequencer Program Counter
3167 * Low byte must be written prior to high byte.
3185 * Source Index Register
3186 * Incrementing index for reads of SINDIR and the destination (low byte only)
3187 * for any immediate operands passed in jmp, jc, jnc, call instructions.
3189 * mvi 0xFF call some_routine;
3191 * Will set SINDEX[0] to 0xFF and call the routine "some_routine.
3201 * Destination Index Register
3202 * Incrementing index for writes to DINDIR. Can be used as a scratch register.
3212 * Sequencer instruction breakpoint address address.
3222 field BRKDIS 0x80 /* Disable Breakpoint */
3227 * All reads to this register return the value 0xFF.
3237 * All reads to this register return the value 0.
3247 * Writes to this register have no effect.
3256 * Source Index Indirect
3257 * Reading this register is equivalent to reading (register_base + SINDEX) and
3258 * incrementing SINDEX by 1.
3266 * Destination Index Indirect
3267 * Writing this register is equivalent to writing to (register_base + DINDEX)
3268 * and incrementing DINDEX by 1.
3277 * 2's complement to bit value conversion. Write the 2's complement value
3278 * (0-7 only) to the top nibble and retrieve the bit indexed by that value
3279 * on the next read of this register.
3284 register FUNCTION1 {
3291 * Window into the stack. Each stack location is 10 bits wide reported
3292 * low byte followed by high byte. There are 8 stack locations.
3300 * Interrupt Vector 1 Address
3301 * Interrupt branch address for SCS SEQ_INT1 mode 0 and 1 interrupts.
3303 register INTVEC1_ADDR {
3312 * Address of the SEQRAM instruction currently executing instruction.
3322 * Interrupt Vector 2 Address
3323 * Interrupt branch address for HST_SEQ_INT2 interrupts.
3325 register INTVEC2_ADDR {
3334 * Address of the SEQRAM instruction executed prior to the current instruction.
3343 register AHD_PCI_CONFIG_BASE {
3350 /* ---------------------- Scratch RAM Offsets ------------------------- */
3367 field SEGS_AVAIL 0x01
3368 field LOADING_NEEDED 0x02
3369 field FETCH_INPROG 0x04
3372 * Track whether the transfer byte count for
3373 * the current data phase is odd.
3402 * Per "other-id" execution queues. We use an array of
3403 * tail pointers into lists of SCBs sorted by "other-id".
3404 * The execution head pointer threads the head SCBs for
3417 * SCBID of the next SCB in the new SCB queue.
3419 NEXT_QUEUED_SCB_ADDR {
3423 * head of list of SCBs that have
3424 * completed but have not been
3425 * put into the qoutfifo.
3431 * The list of completed SCBs in
3434 COMPLETE_SCB_DMAINPROG_HEAD {
3438 * head of list of SCBs that have
3439 * completed but need to be uploaded
3440 * to the host prior to being completed.
3442 COMPLETE_DMA_SCB_HEAD {
3445 /* Counting semaphore to prevent new select-outs */
3450 * Mode to restore on idle_loop exit.
3456 * Single byte buffer used to designate the type or message
3457 * to send to a target.
3462 /* Parameters for DMA Logic */
3465 field PRELOADEN 0x80
3469 field SDMAENACK 0x10
3471 field HDMAENACK 0x08
3472 field DIRECTION 0x04 /* Set indicates PCI->SCSI */
3473 field FIFOFLUSH 0x02
3474 field FIFORESET 0x01
3478 field NOT_IDENTIFIED 0x80
3479 field NO_CDB_SENT 0x40
3480 field TARGET_CMD_IS_TAGGED 0x40
3483 field TARG_CMD_PENDING 0x10
3484 field CMDPHASE_PENDING 0x08
3485 field DPHASE_PENDING 0x04
3486 field SPHASE_PENDING 0x02
3487 field NO_DISCONNECT 0x01
3490 * Temporary storage for the
3491 * target/channel/lun of a
3492 * reconnecting target
3501 * The last bus phase as seen by the sequencer.
3508 field P_BUSFREE 0x01
3509 enum PHASE_MASK CDO|IOO|MSGO {
3512 P_DATAOUT_DT P_DATAOUT|MSGO,
3513 P_DATAIN_DT P_DATAIN|MSGO,
3517 P_MESGIN CDO|IOO|MSGO
3521 * Base address of our shared data with the kernel driver in host
3522 * memory. This includes the qoutfifo and target mode
3523 * incoming command queue.
3529 * Pointer to location in host memory for next
3530 * position in the qoutfifo.
3532 QOUTFIFO_NEXT_ADDR {
3536 * Value to "or" into the SCBPTR[1] value to
3537 * indicate that an entry in the QINFIFO is valid.
3539 QOUTFIFO_ENTRY_VALID_TAG {
3543 * Kernel and sequencer offsets into the queue of
3544 * incoming target mode command descriptors. The
3545 * queue is full when the KERNEL_TQINPOS == TQINPOS.
3556 mask SEND_SENSE 0x40
3558 mask MSGOUT_PHASEMIS 0x10
3559 mask EXIT_MSG_LOOP 0x08
3560 mask CONT_MSG_LOOP_WRITE 0x04
3561 mask CONT_MSG_LOOP_READ 0x03
3562 mask CONT_MSG_LOOP_TARG 0x02
3571 * Snapshot of MSG_OUT taken after each message is sent.
3578 * Sequences the kernel driver has okayed for us. This allows
3579 * the driver to do things like prevent initiator or target
3584 field MANUALCTL 0x40
3588 field ENAUTOATNP 0x02
3593 * The initiator specified tag for this target mode transaction.
3601 field TARGET_MSG_PENDING 0x02
3602 field SELECTOUT_QFROZEN 0x04
3610 * Target-mode CDB type to CDB length table used
3611 * in non-packetized operation.
3618 /************************* Hardware SCB Definition ****************************/
3623 SCB_RESIDUAL_DATACNT {
3627 SCB_RESIDUAL_SGPTR {
3630 field SG_ADDR_MASK 0xf8 /* In the last byte */
3631 field SG_OVERRUN_RESID 0x02 /* In the first byte */
3632 field SG_LIST_NULL 0x01 /* In the first byte */
3640 SCB_TARGET_DATA_DIR {
3648 * Only valid if CDB length is less than 13 bytes or
3649 * we are using a CDB pointer. Otherwise contains
3650 * the last 4 bytes of embedded cdb information.
3653 alias SCB_NEXT_COMPLETE
3660 field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */
3662 SCB_TASK_MANAGEMENT {
3666 alias SCB_NEXT_SCB_BUSADDR
3677 * The last byte is really the high address bits for
3681 field SG_LAST_SEG 0x80 /* In the fourth byte */
3682 field SG_HIGH_ADDR_BITS 0x7F /* In the fourth byte */
3686 field SG_STATUS_VALID 0x04 /* In the first byte */
3687 field SG_FULL_RESID 0x02 /* In the first byte */
3688 field SG_LIST_NULL 0x01 /* In the first byte */
3692 field TARGET_SCB 0x80
3695 field MK_MESSAGE 0x10
3696 field STATUS_RCVD 0x08
3697 field DISCONNECTED 0x04
3698 field SCB_TAG_TYPE 0x03
3709 SCB_TASK_ATTRIBUTE {
3719 SCB_DISCONNECTED_LISTS {
3724 /*********************************** Constants ********************************/
3725 const SEQ_STACK_SIZE 8
3726 const MK_MESSAGE_BIT_OFFSET 4
3728 const TARGET_CMD_CMPLT 0xfe
3729 const INVALID_ADDR 0x80
3730 #define SCB_LIST_NULL 0xff
3731 #define QOUTFIFO_ENTRY_VALID_TOGGLE 0x80
3733 const CCSGADDR_MAX 0x80
3734 const CCSCBADDR_MAX 0x80
3735 const CCSGRAM_MAXSEGS 16
3737 /* Selection Timeout Timer Constants */
3738 const STIMESEL_SHIFT 3
3739 const STIMESEL_MIN 0x18
3740 const STIMESEL_BUG_ADJ 0x8
3742 /* WDTR Message values */
3743 const BUS_8_BIT 0x00
3744 const BUS_16_BIT 0x01
3745 const BUS_32_BIT 0x02
3747 /* Offset maximums */
3748 const MAX_OFFSET 0xfe
3749 const MAX_OFFSET_PACED 0x7f
3753 * The size of our sense buffers.
3754 * Sense buffer mapping can be handled in either of two ways.
3755 * The first is to allocate a dmamap for each transaction.
3756 * Depending on the architecture, dmamaps can be costly. The
3757 * alternative is to statically map the buffers in much the same
3758 * way we handle our scatter gather lists. The driver implements
3761 const AHD_SENSE_BUFSIZE 256
3763 /* Target mode command processing constants */
3764 const CMD_GROUP_CODE_SHIFT 0x05
3766 const STATUS_BUSY 0x08
3767 const STATUS_QUEUE_FULL 0x28
3768 const STATUS_PKT_SENSE 0xFF
3769 const TARGET_DATA_IN 1
3771 const SCB_TRANSFER_SIZE_FULL_LUN 56
3772 const SCB_TRANSFER_SIZE_1BYTE_LUN 48
3773 /* PKT_OVERRUN_BUFSIZE must be a multiple of 256 less than 64K */
3774 const PKT_OVERRUN_BUFSIZE 512
3777 * Downloaded (kernel inserted) constants
3779 const SG_PREFETCH_CNT download
3780 const SG_PREFETCH_CNT_LIMIT download
3781 const SG_PREFETCH_ALIGN_MASK download
3782 const SG_PREFETCH_ADDR_MASK download
3783 const SG_SIZEOF download
3784 const PKT_OVERRUN_BUFOFFSET download
3785 const SCB_TRANSFER_SIZE download
3790 const NVRAM_SCB_OFFSET 0x2C