📄 aic7xxx.reg
字号:
* read the serial EEPROM. */register SEECTL { address 0x01e field EXTARBACK 0x80 field EXTARBREQ 0x40 field SEEMS 0x20 field SEERDY 0x10 field SEECS 0x08 field SEECK 0x04 field SEEDO 0x02 field 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 field DIAGLEDEN 0x80 /* Aic78X0 only */ field DIAGLEDON 0x40 /* Aic78X0 only */ field AUTOFLUSHDIS 0x20 field SELBUSB 0x08 field ENAB40 0x08 /* LVD transceiver active */ field ENAB20 0x04 /* SE/HVD transceiver active */ field SELWIDE 0x02 field XCVR 0x01 /* External transceiver active */}/* * Sequencer Control (p. 3-33) * Error detection mode and speed configuration */register SEQCTL { address 0x060 access_mode RW field PERRORDIS 0x80 field PAUSEDIS 0x40 field FAILDIS 0x20 field FASTMODE 0x10 field BRKADRINTEN 0x08 field STEP 0x04 field SEQRESET 0x02 field 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 field ZERO 0x02 field 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}const STACK_SIZE 4/* * Board Control (p. 3-43) */register BCTL { address 0x084 access_mode RW field ACE 0x08 field ENABLE 0x01}/* * On the aic78X0 chips, Board Control is replaced by the DSCommand * register (p. 4-64) */register DSCOMMAND0 { address 0x084 access_mode RW field CACHETHEN 0x80 /* Cache Threshold enable */ field DPARCKEN 0x40 /* Data Parity Check Enable */ field MPARCKEN 0x20 /* Memory Parity Check Enable */ field EXTREQLCK 0x10 /* External Request Lock */ /* aic7890/91/96/97 only */ field INTSCBRAMSEL 0x08 /* Internal SCB RAM Select */ field RAMPS 0x04 /* External SCB RAM Present */ field USCBSIZE32 0x02 /* Use 32byte SCB Page Size */ field CIOPARCKEN 0x01 /* Internal bus parity error enable */}register DSCOMMAND1 { address 0x085 access_mode RW mask DSLATT 0xfc /* PCI latency timer (non-ultra2) */ field HADDLDSEL1 0x02 /* Host Address Load Select Bits */ field 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 field POWRDN 0x40 field SWINT 0x10 field IRQMS 0x08 field PAUSE 0x04 field INTEN 0x02 field CHIPRST 0x01 field 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 field BRKADRINT 0x08 field SCSIINT 0x04 field CMDCMPLT 0x02 field SEQINT 0x01 mask BAD_PHASE SEQINT /* unknown scsi bus phase */ mask SEND_REJECT 0x10|SEQINT /* sending a message reject */ mask PROTO_VIOLATION 0x20|SEQINT /* SCSI protocol violation */ 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 field CIOPARERR 0x80 /* Ultra2 only */ field PCIERRSTAT 0x40 /* PCI only */ field MPARERR 0x20 /* PCI only */ field DPARERR 0x10 /* PCI only */ field SQPARERR 0x08 field ILLOPCODE 0x04 field ILLSADDR 0x02 field ILLHADDR 0x01}/* * Clear Interrupt Status (p. 3-52) */register CLRINT { address 0x092 access_mode WO field CLRPARERR 0x10 /* PCI only */ field CLRBRKADRINT 0x08 field CLRSCSIINT 0x04 field CLRCMDINT 0x02 field CLRSEQINT 0x01}register DFCNTRL { address 0x093 access_mode RW field PRELOADEN 0x80 /* aic7890 only */ field WIDEODD 0x40 field SCSIEN 0x20 field SDMAEN 0x10 field SDMAENACK 0x10 field HDMAEN 0x08 field HDMAENACK 0x08 field DIRECTION 0x04 field FIFOFLUSH 0x02 field FIFORESET 0x01}register DFSTATUS { address 0x094 access_mode RO field PRELOAD_AVAIL 0x80 field DFCACHETH 0x40 field FIFOQWDEMP 0x20 field MREQPEND 0x10 field HDONE 0x08 field DFTHRESH 0x04 field FIFOFULL 0x02 field 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 field 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 field CRCONSEEN 0x80 field CRCVALCHKEN 0x40 field CRCENDCHKEN 0x20 field CRCREQCHKEN 0x10 field TARGCRCENDEN 0x08 field 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 field STATUS_PHASE 0x20 field COMMAND_PHASE 0x10 field MSG_IN_PHASE 0x08 field MSG_OUT_PHASE 0x04 field DATA_IN_PHASE 0x02 field DATA_OUT_PHASE 0x01 mask DATA_PHASE_MASK 0x03}/* * Special Function */register SFUNCT { address 0x09f access_mode RW field ALT_MODE 0x80}/* * SCB Definition (p. 5-4) */scb { address 0x0a0 size 64 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 field SG_LAST_SEG 0x80 /* In the fourth byte */ mask SG_HIGH_ADDR_BITS 0x7F /* In the fourth byte */ } SCB_SGPTR { size 4 field SG_RESID_VALID 0x04 /* In the first byte */ field SG_FULL_RESID 0x02 /* In the first byte */ field SG_LIST_NULL 0x01 /* In the first byte */ } SCB_CONTROL {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -