📄 aic7xxx.reg
字号:
* * See 93cx6.c for detailed information on the protocol necessary to * read the serial EEPROM. */register SEECTL { address 0x01e bit EXTARBACK 0x80 bit EXTARBREQ 0x40 bit SEEMS 0x20 bit SEERDY 0x10 bit SEECS 0x08 bit SEECK 0x04 bit SEEDO 0x02 bit SEEDI 0x01}/* * SCSI Block Control (p. 3-32) * Controls Bus type and channel selection. In a twin channel configuration * addresses 0x00-0x1e are gated to the appropriate channel based on this * register. SELWIDE allows for the coexistence of 8bit and 16bit devices * on a wide bus. */register SBLKCTL { address 0x01f access_mode RW bit DIAGLEDEN 0x80 /* Aic78X0 only */ bit DIAGLEDON 0x40 /* Aic78X0 only */ bit AUTOFLUSHDIS 0x20 bit SELBUSB 0x08 bit ENAB40 0x08 /* LVD transceiver active */ bit ENAB20 0x04 /* SE/HVD transceiver active */ bit SELWIDE 0x02 bit XCVR 0x01 /* External transceiver active */}/* * Sequencer Control (p. 3-33) * Error detection mode and speed configuration */register SEQCTL { address 0x060 access_mode RW bit PERRORDIS 0x80 bit PAUSEDIS 0x40 bit FAILDIS 0x20 bit FASTMODE 0x10 bit BRKADRINTEN 0x08 bit STEP 0x04 bit SEQRESET 0x02 bit LOADRAM 0x01}/* * Sequencer RAM Data (p. 3-34) * Single byte window into the Scratch Ram area starting at the address * specified by SEQADDR0 and SEQADDR1. To write a full word, simply write * four bytes in succession. The SEQADDRs will increment after the most * significant byte is written */register SEQRAM { address 0x061 access_mode RW}/* * Sequencer Address Registers (p. 3-35) * Only the first bit of SEQADDR1 holds addressing information */register SEQADDR0 { address 0x062 access_mode RW}register SEQADDR1 { address 0x063 access_mode RW mask SEQADDR1_MASK 0x01}/* * Accumulator * We cheat by passing arguments in the Accumulator up to the kernel driver */register ACCUM { address 0x064 access_mode RW accumulator}register SINDEX { address 0x065 access_mode RW sindex}register DINDEX { address 0x066 access_mode RW}register ALLONES { address 0x069 access_mode RO allones}register ALLZEROS { address 0x06a access_mode RO allzeros}register NONE { address 0x06a access_mode WO none}register FLAGS { address 0x06b access_mode RO bit ZERO 0x02 bit CARRY 0x01}register SINDIR { address 0x06c access_mode RO}register DINDIR { address 0x06d access_mode WO}register FUNCTION1 { address 0x06e access_mode RW}register STACK { address 0x06f access_mode RO}/* * Board Control (p. 3-43) */register BCTL { address 0x084 access_mode RW bit ACE 0x08 bit ENABLE 0x01}/* * On the aic78X0 chips, Board Control is replaced by the DSCommand * register (p. 4-64) */register DSCOMMAND0 { address 0x084 access_mode RW bit CACHETHEN 0x80 /* Cache Threshold enable */ bit DPARCKEN 0x40 /* Data Parity Check Enable */ bit MPARCKEN 0x20 /* Memory Parity Check Enable */ bit EXTREQLCK 0x10 /* External Request Lock */ /* aic7890/91/96/97 only */ bit INTSCBRAMSEL 0x08 /* Internal SCB RAM Select */ bit RAMPS 0x04 /* External SCB RAM Present */ bit USCBSIZE32 0x02 /* Use 32byte SCB Page Size */ bit CIOPARCKEN 0x01 /* Internal bus parity error enable */}register DSCOMMAND1 { address 0x085 access_mode RW mask DSLATT 0xfc /* PCI latency timer (non-ultra2) */ bit HADDLDSEL1 0x02 /* Host Address Load Select Bits */ bit HADDLDSEL0 0x01}/* * Bus On/Off Time (p. 3-44) aic7770 only */register BUSTIME { address 0x085 access_mode RW mask BOFF 0xf0 mask BON 0x0f}/* * Bus Speed (p. 3-45) aic7770 only */register BUSSPD { address 0x086 access_mode RW mask DFTHRSH 0xc0 mask STBOFF 0x38 mask STBON 0x07 mask DFTHRSH_100 0xc0 mask DFTHRSH_75 0x80}/* aic7850/55/60/70/80/95 only */register DSPCISTATUS { address 0x086 mask DFTHRSH_100 0xc0}/* aic7890/91/96/97 only */register HS_MAILBOX { address 0x086 mask HOST_MAILBOX 0xF0 mask SEQ_MAILBOX 0x0F mask HOST_TQINPOS 0x80 /* Boundary at either 0 or 128 */}const HOST_MAILBOX_SHIFT 4const SEQ_MAILBOX_SHIFT 0/* * Host Control (p. 3-47) R/W * Overall host control of the device. */register HCNTRL { address 0x087 access_mode RW bit POWRDN 0x40 bit SWINT 0x10 bit IRQMS 0x08 bit PAUSE 0x04 bit INTEN 0x02 bit CHIPRST 0x01 bit CHIPRSTACK 0x01}/* * Host Address (p. 3-48) * This register contains the address of the byte about * to be transferred across the host bus. */register HADDR { address 0x088 size 4 access_mode RW}register HCNT { address 0x08c size 3 access_mode RW}/* * SCB Pointer (p. 3-49) * Gate one of the SCBs into the SCBARRAY window. */register SCBPTR { address 0x090 access_mode RW}/* * Interrupt Status (p. 3-50) * Status for system interrupts */register INTSTAT { address 0x091 access_mode RW bit BRKADRINT 0x08 bit SCSIINT 0x04 bit CMDCMPLT 0x02 bit SEQINT 0x01 mask BAD_PHASE SEQINT /* unknown scsi bus phase */ mask SEND_REJECT 0x10|SEQINT /* sending a message reject */ mask NO_IDENT 0x20|SEQINT /* no IDENTIFY after reconnect*/ mask NO_MATCH 0x30|SEQINT /* no cmd match for reconnect */ mask IGN_WIDE_RES 0x40|SEQINT /* Complex IGN Wide Res Msg */ mask PDATA_REINIT 0x50|SEQINT /* * Returned to data phase * that requires data * transfer pointers to be * recalculated from the * transfer residual. */ mask HOST_MSG_LOOP 0x60|SEQINT /* * The bus is ready for the * host to perform another * message transaction. This * mechanism is used for things * like sync/wide negotiation * that require a kernel based * message state engine. */ mask BAD_STATUS 0x70|SEQINT /* Bad status from target */ mask PERR_DETECTED 0x80|SEQINT /* * Either the phase_lock * or inb_next routine has * noticed a parity error. */ mask DATA_OVERRUN 0x90|SEQINT /* * Target attempted to write * beyond the bounds of its * command. */ mask MKMSG_FAILED 0xa0|SEQINT /* * Target completed command * without honoring our ATN * request to issue a message. */ mask MISSED_BUSFREE 0xb0|SEQINT /* * The sequencer never saw * the bus go free after * either a command complete * or disconnect message. */ mask SCB_MISMATCH 0xc0|SEQINT /* * Downloaded SCB's tag does * not match the entry we * intended to download. */ mask NO_FREE_SCB 0xd0|SEQINT /* * get_free_or_disc_scb failed. */ mask OUT_OF_RANGE 0xe0|SEQINT mask SEQINT_MASK 0xf0|SEQINT /* SEQINT Status Codes */ mask INT_PEND (BRKADRINT|SEQINT|SCSIINT|CMDCMPLT)}/* * Hard Error (p. 3-53) * Reporting of catastrophic errors. You usually cannot recover from * these without a full board reset. */register ERROR { address 0x092 access_mode RO bit CIOPARERR 0x80 /* Ultra2 only */ bit PCIERRSTAT 0x40 /* PCI only */ bit MPARERR 0x20 /* PCI only */ bit DPARERR 0x10 /* PCI only */ bit SQPARERR 0x08 bit ILLOPCODE 0x04 bit ILLSADDR 0x02 bit ILLHADDR 0x01}/* * Clear Interrupt Status (p. 3-52) */register CLRINT { address 0x092 access_mode WO bit CLRPARERR 0x10 /* PCI only */ bit CLRBRKADRINT 0x08 bit CLRSCSIINT 0x04 bit CLRCMDINT 0x02 bit CLRSEQINT 0x01}register DFCNTRL { address 0x093 access_mode RW bit PRELOADEN 0x80 /* aic7890 only */ bit WIDEODD 0x40 bit SCSIEN 0x20 bit SDMAEN 0x10 bit SDMAENACK 0x10 bit HDMAEN 0x08 bit HDMAENACK 0x08 bit DIRECTION 0x04 bit FIFOFLUSH 0x02 bit FIFORESET 0x01}register DFSTATUS { address 0x094 access_mode RO bit PRELOAD_AVAIL 0x80 bit DFCACHETH 0x40 bit FIFOQWDEMP 0x20 bit MREQPEND 0x10 bit HDONE 0x08 bit DFTHRESH 0x04 bit FIFOFULL 0x02 bit FIFOEMP 0x01}register DFWADDR { address 0x95 access_mode RW}register DFRADDR { address 0x97 access_mode RW}register DFDAT { address 0x099 access_mode RW}/* * SCB Auto Increment (p. 3-59) * Byte offset into the SCB Array and an optional bit to allow auto * incrementing of the address during download and upload operations */register SCBCNT { address 0x09a access_mode RW bit SCBAUTO 0x80 mask SCBCNT_MASK 0x1f}/* * Queue In FIFO (p. 3-60) * Input queue for queued SCBs (commands that the seqencer has yet to start) */register QINFIFO { address 0x09b access_mode RW}/* * Queue In Count (p. 3-60) * Number of queued SCBs */register QINCNT { address 0x09c access_mode RO}/* * Queue Out FIFO (p. 3-61) * Queue of SCBs that have completed and await the host */register QOUTFIFO { address 0x09d access_mode WO}register CRCCONTROL1 { address 0x09d access_mode RW bit CRCONSEEN 0x80 bit CRCVALCHKEN 0x40 bit CRCENDCHKEN 0x20 bit CRCREQCHKEN 0x10 bit TARGCRCENDEN 0x08 bit TARGCRCCNTEN 0x04}/* * Queue Out Count (p. 3-61) * Number of queued SCBs in the Out FIFO */register QOUTCNT { address 0x09e access_mode RO}register SCSIPHASE { address 0x09e access_mode RO bit STATUS_PHASE 0x20 bit COMMAND_PHASE 0x10 bit MSG_IN_PHASE 0x08 bit MSG_OUT_PHASE 0x04 bit DATA_IN_PHASE 0x02 bit DATA_OUT_PHASE 0x01 mask DATA_PHASE_MASK 0x03}/* * Special Function */register SFUNCT { address 0x09f access_mode RW bit ALT_MODE 0x80}/* * SCB Definition (p. 5-4) */scb { address 0x0a0 SCB_CDB_PTR { size 4 alias SCB_RESIDUAL_DATACNT alias SCB_CDB_STORE } SCB_RESIDUAL_SGPTR { size 4 } SCB_SCSI_STATUS { size 1 } SCB_TARGET_PHASES { size 1 } SCB_TARGET_DATA_DIR { size 1 } SCB_TARGET_ITAG { size 1 } SCB_DATAPTR { size 4 } SCB_DATACNT { /* * The last byte is really the high address bits for * the data address. */ size 4 bit SG_LAST_SEG 0x80 /* In the fourth byte */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -