LINUX1.0内核源代码,学习LINUX编程的一定要看。

源代码在线查看: aha152x.h

软件大小: 1285 K
上传用户: kyzgq
关键词: LINUX 1.0 内核 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				#ifndef _AHA152X_H				#define _AHA152X_H								/*				 * $Id: aha152x.h,v 0.2 1993/10/03 00:58:03 root Exp $				 */								#include "../block/blk.h"				#include "scsi.h"				#if defined(__KERNEL__)				#include 								int        aha152x_detect(int);				const char *aha152x_info(void);				int        aha152x_command(Scsi_Cmnd *);				int        aha152x_queue(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));				int        aha152x_abort(Scsi_Cmnd *, int);				int        aha152x_reset(Scsi_Cmnd *);				int        aha152x_biosparam(int, int, int*);								/* number of queueable commands				   (unless we support more than 1 cmd_per_lun this should do) */				#define AHA152X_MAXQUEUE	7										/* Initial value of Scsi_Host entry */				#define AHA152X       { /* name */		"Adaptec 152x SCSI driver", \							/* detect */		aha152x_detect,             \							/* info */		aha152x_info,               \							/* command */		aha152x_command,            \							/* queuecommand */	aha152x_queue,              \				                        /* abort */		aha152x_abort,              \				                        /* reset */		aha152x_reset,              \				                        /* slave_attach */	/* NULL */  0,              \				                        /* bios_param */	aha152x_biosparam,          \							/* can_queue */		1,                          \				                        /* this_id */		7,                          \				                        /* sg_tablesize */	SG_ALL,                     \				                        /* cmd_per_lun */	1,                          \				                        /* present */		0,                          \				                        /* unchecked_isa_dma */	0 }				#endif												/* port addresses */				#define SCSISEQ		(port_base+0x00)	/* SCSI sequence control */				#define SXFRCTL0	(port_base+0x01)	/* SCSI transfer control 0 */				#define SXFRCTL1	(port_base+0x02)	/* SCSI transfer control 1 */				#define SCSISIG		(port_base+0x03)	/* SCSI signal in/out */				#define SCSIRATE	(port_base+0x04)	/* SCSI rate control */				#define SELID		(port_base+0x05)	/* selection/reselection ID */				#define SCSIID		SELID			/* SCSI ID */				#define SCSIDAT		(port_base+0x06)	/* SCSI latched data */				#define SCSIBUS		(port_base+0x07)	/* SCSI data bus */				#define STCNT0		(port_base+0x08)	/* SCSI transfer count 0 */				#define STCNT1		(port_base+0x09)	/* SCSI transfer count 1 */				#define STCNT2		(port_base+0x0a)	/* SCSI transfer count 2 */				#define SSTAT0		(port_base+0x0b)	/* SCSI interrupt status 0 */				#define SSTAT1		(port_base+0x0c)	/* SCSI interrupt status 1 */				#define SSTAT2		(port_base+0x0d)	/* SCSI interrupt status 2 */				#define SCSITEST	(port_base+0x0e)	/* SCSI test control */				#define SSTAT4		(port_base+0x0f)	/* SCSI status 4 */				#define SIMODE0		(port_base+0x10)	/* SCSI interrupt mode 0 */				#define SIMODE1		(port_base+0x11)	/* SCSI interrupt mode 1 */				#define DMACNTRL0	(port_base+0x12)	/* DMA control 0 */				#define DMACNTRL1	(port_base+0x13)	/* DMA control 1 */				#define DMASTAT		(port_base+0x14)	/* DMA status */				#define FIFOSTAT	(port_base+0x15)	/* FIFO status */				#define DATAPORT	(port_base+0x16)	/* DATA port */				#define BRSTCNTRL	(port_base+0x18)	/* burst control */				#define PORTA		(port_base+0x1a)	/* PORT A */				#define PORTB		(port_base+0x1b)	/* PORT B */				#define REV		(port_base+0x1c)	/* revision */				#define STACK		(port_base+0x1d)	/* stack */				#define TEST		(port_base+0x1e)	/* test register */												/* bits and bitmasks to ports */								/* SCSI sequence control */				#define	TEMODEO		0x80				#define ENSELO		0x40				#define ENSELI		0x20				#define ENRESELI	0x10				#define ENAUTOATNO	0x08				#define ENAUTOATNI	0x04				#define ENAUTOATNP	0x02				#define SCSIRSTO	0x01								/* SCSI transfer control 0 */				#define	SCSIEN		0x80				#define DMAEN		0x40				#define CH1		0x20				#define CLRSTCNT	0x10				#define SPIOEN		0x08				#define CLRCH1		0x02								/* SCSI transfer control 1 */				#define	BITBUCKET	0x80				#define SWRAPEN		0x40				#define ENSPCHK		0x20				#define	STIMESEL	0x18	/* mask */				#define STIMESEL_	3				#define ENSTIMER	0x04				#define BYTEALIGN	0x02								/* SCSI signal IN */				#define	CDI		0x80				#define IOI		0x40				#define MSGI		0x20				#define ATNI		0x10				#define SELI		0x08				#define BSYI		0x04				#define REQI		0x02				#define ACKI		0x01								/* SCSI Phases */				#define P_MASK		(MSGI|CDI|IOI)				#define P_DATAO		(0)				#define P_DATAI		(IOI)				#define	P_CMD		(CDI)				#define P_STATUS	(CDI|IOI)				#define P_MSGO		(MSGI|CDI)				#define P_MSGI		(MSGI|CDI|IOI)								/* SCSI signal OUT */				#define	CDO		0x80				#define IOO		0x40				#define MSGO		0x20				#define ATNO		0x10				#define SELO		0x08				#define BSYO		0x04				#define REQO		0x02				#define ACKO		0x01								/* SCSI rate control */				#define SXFR		0x70	/* mask */				#define SXFR_		4				#define SOFS		0x0f	/* mask */								/* SCSI ID */				#define	OID		0x70				#define OID_		4				#define TID		0x07								/* SCSI transfer count */				#define GETSTCNT()   ( (GETPORT(STCNT2)				                     + (GETPORT(STCNT1)				                     + GETPORT(STCNT0) )								#define SETSTCNT(X)  { SETPORT(STCNT2, ((X) & 0xFF0000) >> 16); \				                       SETPORT(STCNT1, ((X) & 0x00FF00) >>  8); \				                       SETPORT(STCNT0, ((X) & 0x0000FF) ); }								/* SCSI interrupt status */				#define	TARGET		0x80				#define SELDO		0x40				#define	SELDI		0x20				#define SELINGO		0x10				#define SWRAP		0x08				#define	SDONE		0x04				#define SPIORDY		0x02				#define DMADONE		0x01								#define SETSDONE	0x80				#define CLRSELDO	0x40				#define CLRSELDI	0x20				#define CLRSELINGO	0x10				#define CLRSWRAP	0x08				#define CLRSDONE	0x04				#define CLRSPIORDY	0x02				#define CLRDMADONE	0x01								/* SCSI status 1 */				#define SELTO		0x80				#define ATNTARG		0x40				#define SCSIRSTI	0x20				#define PHASEMIS	0x10				#define BUSFREE		0x08				#define SCSIPERR	0x04				#define PHASECHG	0x02				#define	REQINIT		0x01								#define CLRSELTIMO	0x80				#define CLRATNO		0x40				#define CLRSCSIRSTI	0x20				#define CLRBUSFREE	0x08				#define	CLRSCSIPERR	0x04				#define CLRPHASECHG	0x02				#define CLRREQINIT	0x01								/* SCSI status 2 */				#define SOFFSET		0x20				#define SEMPTY		0x10				#define	SFULL		0x08				#define	SFCNT		0x07	/* mask */								/* SCSI status 3 */				#define	SCSICNT		0xf0	/* mask */				#define	SCSICNT_	4				#define OFFCNT		0x0f	/* mask */								/* SCSI TEST control */				#define	SCTESTU		0x08				#define	SCTESTD		0x04				#define STCTEST		0x01								/* SCSI status 4 */				#define	SYNCERR		0x04				#define FWERR		0x02				#define FRERR		0x01								#define	CLRSYNCERR	0x04				#define CLRFWERR	0x02				#define	CLRFRERR	0x01								/* SCSI interrupt mode 0 */				#define ENSELDO		0x40				#define ENSELDI		0x20				#define ENSELINGO	0x10				#define ENSWRAP		0x08				#define ENSDONE		0x04				#define ENSPIORDY	0x02				#define ENDMADONE	0x01								/* SCSI interrupt mode 1 */				#define	ENSELTIMO	0x80				#define ENATNTARG	0x40				#define ENSCSIRST	0x20				#define ENPHASEMIS	0x10				#define ENBUSFREE	0x08				#define ENSCSIPERR	0x04				#define ENPHASECHG	0x02				#define ENREQINIT	0x01								/* DMA control 0 */				#define ENDMA		0x80				#define _8BIT		0x40				#define	DMA		0x20				#define	WRITE_READ	0x08				#define	INTEN		0x04				#define RSTFIFO		0x02				#define SWINT		0x01								/* DMA control 1 */				#define PWRDWN		0x80				#define STK		0x07	/* mask */								/* DMA status */				#define ATDONE		0x80				#define WORDRDY		0x40				#define INTSTAT		0x20				#define DFIFOFULL	0x10				#define DFIFOEMP	0x08								/* BURST control */				#define BON		0xf0				#define BOFF		0x0f								/* TEST REGISTER */				#define	BOFFTMR		0x40				#define BONTMR		0x20				#define STCNTH		0x10				#define STCNTM		0x08				#define STCNTL		0x04				#define SCSIBLK		0x02				#define DMABLK		0x01								/* On the AHA-152x board PORTA and PORTB contain				   some information about the board's configuration. */				typedef union {				  struct {				    unsigned reserved:2;	/* reserved */				    unsigned tardisc:1;		/* Target disconnect: 0=disabled, 1=enabled */				    unsigned syncneg:1;		/* Initial sync neg: 0=disabled, 1=enabled */				    unsigned msgclasses:2;	/* Message classes								   0=#4								   1=#0, #1, #2, #3, #4								   2=#0, #3, #4								   3=#0, #4								*/				    unsigned boot:1;		/* boot: 0=disabled, 1=enabled */				    unsigned dma:1;		/* Transfer mode: 0=PIO; 1=DMA */				    unsigned id:3;		/* SCSI-id */				    unsigned irq:2;		/* IRQ-Channel: 0,3=12, 1=10, 2=11 */				    unsigned dmachan:2;		/* DMA-Channel: 0=0, 1=5, 2=6, 3=7 */				    unsigned parity:1;		/* SCSI-parity: 1=enabled 0=disabled */				  } fields;				  unsigned short port;				} aha152x_config ;								#define cf_parity	fields.parity				#define cf_dmachan	fields.dmachan				#define cf_irq		fields.irq				#define cf_id		fields.id				#define cf_dma		fields.dma				#define cf_boot		fields.boot				#define	cf_msgclasses	fields.msgclasses				#define cf_syncneg	fields.syncneg				#define cf_tardisc	fields.tardisc				#define cf_port		port								/* Some macros to manipulate ports and their bits */								#define SETPORT(PORT, VAL)	\					outb( (VAL), (PORT) )								#define SETPORTP(PORT, VAL)	\					outb_p( (VAL), (PORT) )								#define SETPORTW(PORT, VAL)	\					outw( (VAL), (PORT) )								#define GETPORT(PORT)	\					inb( PORT )								#define GETPORTW(PORT)	\					inw( PORT )								#define SETBITS(PORT, BITS)	\					outb( (inb(PORT) | (BITS)), (PORT) )								#define CLRBITS(PORT, BITS)	\					outb( (inb(PORT) & ~(BITS)), (PORT) )								#define CLRSETBITS(PORT, CLR, SET)	\					outb( (inb(PORT) & ~(CLR)) | (SET) , (PORT) )								#define TESTHI(PORT, BITS)	\					((inb(PORT) & (BITS)) == BITS)								#define TESTLO(PORT, BITS)	\					((inb(PORT) & (BITS)) == 0)								#endif /* _AHA152X_H */							

相关资源