⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aic7xxx.reg

📁 linux-2.6.15.6
💻 REG
📖 第 1 页 / 共 2 页
字号:
/* * Aic7xxx register and scratch ram definitions. * * Copyright (c) 1994-1998 Justin Gibbs. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions, and the following disclaimer, *    without modification, immediately at the beginning of the file. * 2. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * Where this Software is combined with software released under the terms of  * the GNU General Public License ("GPL") and the terms of the GPL would require the  * combined work to also be released under the terms of the GPL, the terms * and conditions of this License will apply in addition to those of the * GPL with the exception of any terms or conditions of this License that * conflict with, or are expressly prohibited by, the GPL. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	$Id: aic7xxx.reg,v 1.4 1997/06/27 19:38:39 gibbs Exp $ *//* * This file is processed by the aic7xxx_asm utility for use in assembling * firmware for the aic7xxx family of SCSI host adapters as well as to generate * a C header file for use in the kernel portion of the Aic7xxx driver. * * All page numbers refer to the Adaptec AIC-7770 Data Book available from * Adaptec's Technical Documents Department 1-800-934-2766 *//* * SCSI Sequence Control (p. 3-11). * Each bit, when set starts a specific SCSI sequence on the bus */register SCSISEQ {	address			0x000	access_mode RW	bit	TEMODE		0x80	bit	ENSELO		0x40	bit	ENSELI		0x20	bit	ENRSELI		0x10	bit	ENAUTOATNO	0x08	bit	ENAUTOATNI	0x04	bit	ENAUTOATNP	0x02	bit	SCSIRSTO	0x01}/* * SCSI Transfer Control 0 Register (pp. 3-13). * Controls the SCSI module data path. */register SXFRCTL0 {	address			0x001	access_mode RW	bit	DFON		0x80	bit	DFPEXP		0x40	bit	FAST20		0x20	bit	CLRSTCNT	0x10	bit	SPIOEN		0x08	bit	SCAMEN		0x04	bit	CLRCHN		0x02}/* * SCSI Transfer Control 1 Register (pp. 3-14,15). * Controls the SCSI module data path. */register SXFRCTL1 {	address			0x002	access_mode RW	bit	BITBUCKET	0x80	bit	SWRAPEN		0x40	bit	ENSPCHK		0x20	mask	STIMESEL	0x18	bit	ENSTIMER	0x04	bit	ACTNEGEN	0x02	bit	STPWEN		0x01	/* Powered Termination */}/* * SCSI Control Signal Read Register (p. 3-15). * Reads the actual state of the SCSI bus pins */register SCSISIGI {	address			0x003	access_mode RO	bit	CDI		0x80	bit	IOI		0x40	bit	MSGI		0x20	bit	ATNI		0x10	bit	SELI		0x08	bit	BSYI		0x04	bit	REQI		0x02	bit	ACKI		0x01/* * Possible phases in SCSISIGI */	mask	PHASE_MASK	CDI|IOI|MSGI	mask	P_DATAOUT	0x00	mask	P_DATAIN	IOI	mask	P_COMMAND	CDI	mask	P_MESGOUT	CDI|MSGI	mask	P_STATUS	CDI|IOI	mask	P_MESGIN	CDI|IOI|MSGI}/* * SCSI Control Signal Write Register (p. 3-16). * Writing to this register modifies the control signals on the bus.  Only * those signals that are allowed in the current mode (Initiator/Target) are * asserted. */register SCSISIGO {	address			0x003	access_mode WO	bit	CDO		0x80	bit	IOO		0x40	bit	MSGO		0x20	bit	ATNO		0x10	bit	SELO		0x08	bit	BSYO		0x04	bit	REQO		0x02	bit	ACKO		0x01/* * Possible phases to write into SCSISIG0 */	mask	PHASE_MASK	CDI|IOI|MSGI	mask	P_DATAOUT	0x00	mask	P_DATAIN	IOI	mask	P_COMMAND	CDI	mask	P_MESGOUT	CDI|MSGI	mask	P_STATUS	CDI|IOI	mask	P_MESGIN	CDI|IOI|MSGI}/*  * SCSI Rate Control (p. 3-17). * Contents of this register determine the Synchronous SCSI data transfer * rate and the maximum synchronous Req/Ack offset.  An offset of 0 in the * SOFS (3:0) bits disables synchronous data transfers.  Any offset value * greater than 0 enables synchronous transfers. */register SCSIRATE {	address			0x004	access_mode RW	bit	WIDEXFER	0x80		/* Wide transfer control */	mask	SXFR		0x70		/* Sync transfer rate */	mask	SXFR_ULTRA2	0x7f		/* Sync transfer rate */	mask	SOFS		0x0f		/* Sync offset */}/* * SCSI ID (p. 3-18). * Contains the ID of the board and the current target on the * selected channel. */register SCSIID	{	address			0x005	access_mode RW	mask	TID		0xf0		/* Target ID mask */	mask	OID		0x0f		/* Our ID mask */	/*	 * SCSI Maximum Offset (p. 4-61 aic7890/91 Data Book)	 * The aic7890/91 allow an offset of up to 127 transfers in both wide	 * and narrow mode.	 */	alias	SCSIOFFSET	mask	SOFS_ULTRA2	0x7f		/* Sync offset U2 chips */}/* * SCSI Latched Data (p. 3-19). * Read/Write latches used to transfer data on the SCSI bus during * Automatic or Manual PIO mode.  SCSIDATH can be used for the * upper byte of a 16bit wide asynchronouse data phase transfer. */register SCSIDATL {	address			0x006	access_mode RW}register SCSIDATH {	address			0x007	access_mode RW}/* * SCSI Transfer Count (pp. 3-19,20) * These registers count down the number of bytes transferred * across the SCSI bus.  The counter is decremented only once * the data has been safely transferred.  SDONE in SSTAT0 is * set when STCNT goes to 0 */ register STCNT {	address			0x008	size	3	access_mode RW}/* * Option Mode Register (Alternate Mode) (p. 5-198) * This register is used to set certain options on Ultra3 based chips. * The chip must be in alternate mode (bit ALT_MODE in SFUNCT must be set) */register OPTIONMODE {	address			0x008	access_mode RW	bit	AUTORATEEN	0x80	bit	AUTOACKEN	0x40	bit	ATNMGMNTEN	0x20	bit	BUSFREEREV	0x10	bit	EXPPHASEDIS	0x08	bit	SCSIDATL_IMGEN	0x04	bit	AUTO_MSGOUT_DE	0x02	bit	DIS_MSGIN_DUALEDGE	0x01}/* * Clear SCSI Interrupt 0 (p. 3-20) * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0. */register CLRSINT0 {	address			0x00b	access_mode WO	bit	CLRSELDO	0x40	bit	CLRSELDI	0x20	bit	CLRSELINGO	0x10	bit	CLRSWRAP	0x08	bit	CLRSPIORDY	0x02}/* * SCSI Status 0 (p. 3-21) * Contains one set of SCSI Interrupt codes * These are most likely of interest to the sequencer */register SSTAT0	{	address			0x00b	access_mode RO	bit	TARGET		0x80	/* Board acting as target */	bit	SELDO		0x40	/* Selection Done */	bit	SELDI		0x20	/* Board has been selected */	bit	SELINGO		0x10	/* Selection In Progress */	bit	SWRAP		0x08	/* 24bit counter wrap */	bit	IOERR		0x08	/* LVD Tranceiver mode changed */	bit	SDONE		0x04	/* STCNT = 0x000000 */	bit	SPIORDY		0x02	/* SCSI PIO Ready */	bit	DMADONE		0x01	/* DMA transfer completed */}/* * Clear SCSI Interrupt 1 (p. 3-23) * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1. */register CLRSINT1 {	address			0x00c	access_mode WO	bit	CLRSELTIMEO	0x80	bit	CLRATNO		0x40	bit	CLRSCSIRSTI	0x20	bit	CLRBUSFREE	0x08	bit	CLRSCSIPERR	0x04	bit	CLRPHASECHG	0x02	bit	CLRREQINIT	0x01}/* * SCSI Status 1 (p. 3-24) */register SSTAT1	{	address			0x00c	access_mode RO	bit	SELTO		0x80	bit	ATNTARG 	0x40	bit	SCSIRSTI	0x20	bit	PHASEMIS	0x10	bit	BUSFREE		0x08	bit	SCSIPERR	0x04	bit	PHASECHG	0x02	bit	REQINIT		0x01}/* * SCSI Status 2 (pp. 3-25,26) */register SSTAT2 {	address			0x00d	access_mode RO	bit	OVERRUN		0x80	bit	SHVALID		0x40	bit	WIDE_RES	0x20	bit	EXP_ACTIVE	0x10	/* SCSI Expander Active */	bit	CRCVALERR	0x08	/* CRC Value Error */	bit	CRCENDERR	0x04	/* CRC End Error */	bit	CRCREQERR	0x02	/* CRC REQ Error */	bit	DUAL_EDGE_ERROR	0x01	/* Invalid pins for Dual Edge phase */	mask	SFCNT		0x1f}/* * SCSI Status 3 (p. 3-26) */register SSTAT3 {	address			0x00e	access_mode RO	mask	SCSICNT		0xf0	mask	OFFCNT		0x0f}/* * SCSI ID for the aic7890/91 chips */register SCSIID_ULTRA2 {	address			0x00f	access_mode RW	mask	TID		0xf0		/* Target ID mask */	mask	OID		0x0f		/* Our ID mask */}/* * SCSI Interrupt Mode 1 (p. 3-28) * Setting any bit will enable the corresponding function * in SIMODE0 to interrupt via the IRQ pin. */register SIMODE0 {	address			0x010	access_mode RW	bit	ENSELDO		0x40	bit	ENSELDI		0x20	bit	ENSELINGO	0x10	bit	ENSWRAP		0x08	bit	ENIOERR		0x08	/* LVD Tranceiver mode changes */	bit	ENSDONE		0x04	bit	ENSPIORDY	0x02	bit	ENDMADONE	0x01}/* * SCSI Interrupt Mode 1 (pp. 3-28,29) * Setting any bit will enable the corresponding function * in SIMODE1 to interrupt via the IRQ pin. */register SIMODE1 {	address			0x011	access_mode RW	bit	ENSELTIMO	0x80	bit	ENATNTARG	0x40	bit	ENSCSIRST	0x20	bit	ENPHASEMIS	0x10	bit	ENBUSFREE	0x08	bit	ENSCSIPERR	0x04	bit	ENPHASECHG	0x02	bit	ENREQINIT	0x01}/* * SCSI Data Bus (High) (p. 3-29) * This register reads data on the SCSI Data bus directly. */register SCSIBUSL {	address			0x012	access_mode RO}register SCSIBUSH {	address			0x013	access_mode RO}/* * SCSI/Host Address (p. 3-30) * These registers hold the host address for the byte about to be * transferred on the SCSI bus.  They are counted up in the same * manner as STCNT is counted down.  SHADDR should always be used * to determine the address of the last byte transferred since HADDR * can be skewed by write ahead. */register SHADDR {	address			0x014	size	4	access_mode RO}/* * Selection Timeout Timer (p. 3-30) */register SELTIMER {	address			0x018	access_mode RW	bit	STAGE6		0x20	bit	STAGE5		0x10	bit	STAGE4		0x08	bit	STAGE3		0x04	bit	STAGE2		0x02	bit	STAGE1		0x01}/* * Selection/Reselection ID (p. 3-31) * Upper four bits are the device id.  The ONEBIT is set when the re/selecting * device did not set its own ID. */register SELID {	address			0x019	access_mode RW	mask	SELID_MASK	0xf0	bit	ONEBIT		0x08}/* * Serial Port I/O Cabability register (p. 4-95 aic7860 Data Book) * Indicates if external logic has been attached to the chip to * perform the tasks of accessing a serial eeprom, testing termination * strength, and performing cable detection.  On the aic7860, most of * these features are handled on chip, but on the aic7855 an attached * aic3800 does the grunt work. */register SPIOCAP {	address			0x01b	access_mode RW	bit	SOFT1		0x80	bit	SOFT0		0x40	bit	SOFTCMDEN	0x20		bit	HAS_BRDCTL	0x10	/* External Board control */	bit	SEEPROM		0x08	/* External serial eeprom logic */	bit	EEPROM		0x04	/* Writable external BIOS ROM */	bit	ROM		0x02	/* Logic for accessing external ROM */	bit	SSPIOCPS	0x01	/* Termination and cable detection */}/* * 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}register DSCOMMAND0 {	address			0x084	access_mode RW	bit	CACHETHEN	0x80	bit	DPARCKEN	0x40	bit	MPARCKEN	0x20	bit	EXTREQLCK	0x10	bit	INTSCBRAMSEL	0x08	bit	RAMPS		0x04	bit	USCBSIZE32	0x02	bit	CIOPARCKEN	0x01}/* * On the aic78X0 chips, Board Control is replaced by the DSCommand * register (p. 4-64) */register DSCOMMAND {	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 */}/* * Bus On/Off Time (p. 3-44) */register BUSTIME {	address			0x085	access_mode RW	mask	BOFF		0xf0	mask	BON		0x0f}/* * Bus Speed (p. 3-45) */register BUSSPD {	address			0x086	access_mode RW	mask	DFTHRSH		0xc0	mask	STBOFF		0x38	mask	STBON		0x07	mask	DFTHRSH_100	0xc0}/* * 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 four 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	EXTENDED_MSG	0x40|SEQINT	/* Extended message received */	mask	WIDE_RESIDUE	0x50|SEQINT	/* need kernel to back up */						/* the SG array for us */	mask	REJECT_MSG	0x60|SEQINT	/* Reject message received */	mask	BAD_STATUS	0x70|SEQINT	/* Bad status from target */	mask	RESIDUAL	0x80|SEQINT	/* Residual byte count != 0 */	mask	AWAITING_MSG	0xa0|SEQINT	/*						 * Kernel requested to specify						 * a message to this target

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -