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

📄 aha1542.h

📁 基于组件方式开发操作系统的OSKIT源代码
💻 H
字号:
#ifndef _AHA1542_H/* $Id: aha1542.h,v 1.1 1992/07/24 06:27:38 root Exp root $ * * Header file for the adaptec 1542 driver for Linux * * $Log: aha1542.h,v $ * Revision 1.1  1992/07/24  06:27:38  root * Initial revision * * Revision 1.2  1992/07/04  18:41:49  root * Replaced distribution with current drivers * * Revision 1.3  1992/06/23  23:58:20  root * Fixes. * * Revision 1.2  1992/05/26  22:13:23  root * Changed bug that prevented DMA above first 2 mbytes. * * Revision 1.1  1992/05/22  21:00:29  root * Initial revision * * Revision 1.1  1992/04/24  18:01:50  root * Initial revision * * Revision 1.1  1992/04/02  03:23:13  drew * Initial revision * * Revision 1.3  1992/01/27  14:46:29  tthorn * *** empty log message *** * */#include <linux/types.h>#include <linux/kdev_t.h>/* I/O Port interface 4.2 *//* READ */#define STATUS(base) base#define STST	0x80		/* Self Test in Progress */#define DIAGF	0x40		/* Internal Diagnostic Failure */#define INIT	0x20		/* Mailbox Initialization Required */#define IDLE	0x10		/* SCSI Host Adapter Idle */#define CDF	0x08		/* Command/Data Out Port Full */#define DF	0x04		/* Data In Port Full */#define INVDCMD	0x01		/* Invalid H A Command */#define STATMASK 0xfd		/* 0x02 is reserved */#define INTRFLAGS(base) (STATUS(base)+2)#define ANYINTR	0x80		/* Any Interrupt */#define SCRD	0x08		/* SCSI Reset Detected */#define HACC	0x04		/* HA Command Complete */#define MBOA	0x02		/* MBO Empty */#define MBIF	0x01		/* MBI Full */#define INTRMASK 0x8f/* WRITE */#define CONTROL(base) STATUS(base)#define HRST	0x80		/* Hard Reset */#define SRST	0x40		/* Soft Reset */#define IRST	0x20		/* Interrupt Reset */#define SCRST	0x10		/* SCSI Bus Reset *//* READ/WRITE */#define DATA(base) (STATUS(base)+1)#define CMD_NOP		0x00	/* No Operation */#define CMD_MBINIT	0x01	/* Mailbox Initialization */#define CMD_START_SCSI	0x02	/* Start SCSI Command */#define CMD_INQUIRY	0x04	/* Adapter Inquiry */#define CMD_EMBOI	0x05	/* Enable MailBox Out Interrupt */#define CMD_BUSON_TIME	0x07	/* Set Bus-On Time */#define CMD_BUSOFF_TIME	0x08	/* Set Bus-Off Time */#define CMD_DMASPEED	0x09	/* Set AT Bus Transfer Speed */#define CMD_RETDEVS	0x0a	/* Return Installed Devices */#define CMD_RETCONF	0x0b	/* Return Configuration Data */#define CMD_RETSETUP	0x0d	/* Return Setup Data */#define CMD_ECHO	0x1f	/* ECHO Command Data */#define CMD_EXTBIOS     0x28    /* Return extend bios information only 1542C */#define CMD_MBENABLE    0x29    /* Set Mailbox Interface enable only 1542C *//* Mailbox Definition 5.2.1 and 5.2.2 */struct mailbox {  unchar status;		/* Command/Status */  unchar ccbptr[3];		/* msb, .., lsb */};/* This is used with scatter-gather */struct chain {  unchar datalen[3];		/* Size of this part of chain */  unchar dataptr[3];		/* Location of data */};/* These belong in scsi.h also */#define any2scsi(up, p)				\(up)[0] = (((unsigned long)(p)) >> 16)  ;	\(up)[1] = (((unsigned long)(p)) >> 8);		\(up)[2] = ((unsigned long)(p));#define scsi2int(up) ( (((long)*(up)) << 16) + (((long)(up)[1]) << 8) + ((long)(up)[2]) )#define xany2scsi(up, p)	\(up)[0] = ((long)(p)) >> 24;	\(up)[1] = ((long)(p)) >> 16;	\(up)[2] = ((long)(p)) >> 8;	\(up)[3] = ((long)(p));#define xscsi2int(up) ( (((long)(up)[0]) << 24) + (((long)(up)[1]) << 16) \		      + (((long)(up)[2]) <<  8) +  ((long)(up)[3]) )#define MAX_CDB 12#define MAX_SENSE 14struct ccb {			/* Command Control Block 5.3 */  unchar op;			/* Command Control Block Operation Code */  unchar idlun;			/* op=0,2:Target Id, op=1:Initiator Id */				/* Outbound data transfer, length is checked*/				/* Inbound data transfer, length is checked */				/* Logical Unit Number */  unchar cdblen;		/* SCSI Command Length */  unchar rsalen;		/* Request Sense Allocation Length/Disable */  unchar datalen[3];		/* Data Length (msb, .., lsb) */  unchar dataptr[3];		/* Data Pointer */  unchar linkptr[3];		/* Link Pointer */  unchar commlinkid;		/* Command Linking Identifier */  unchar hastat;		/* Host Adapter Status (HASTAT) */  unchar tarstat;		/* Target Device Status */  unchar reserved[2];  unchar cdb[MAX_CDB+MAX_SENSE];/* SCSI Command Descriptor Block */				/* REQUEST SENSE */};int aha1542_detect(Scsi_Host_Template *);int aha1542_command(Scsi_Cmnd *);int aha1542_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));int aha1542_abort(Scsi_Cmnd * SCpnt);int aha1542_bus_reset(Scsi_Cmnd * SCpnt);int aha1542_dev_reset(Scsi_Cmnd * SCpnt);int aha1542_host_reset(Scsi_Cmnd * SCpnt);extern int aha1542_old_abort(Scsi_Cmnd * SCpnt);int aha1542_old_reset(Scsi_Cmnd *, unsigned int);int aha1542_biosparam(Disk *, kdev_t, int*);#define AHA1542_MAILBOXES 8#define AHA1542_SCATTER 16#define AHA1542_CMDLUN 1#ifndef NULL	#define NULL 0#endifextern struct proc_dir_entry proc_scsi_aha1542;#define AHA1542 {    proc_dir:			&proc_scsi_aha1542,	\		     name:			"Adaptec 1542", 	\		     detect:			aha1542_detect,		\		     command:			aha1542_command,	\		     queuecommand:		aha1542_queuecommand,	\                     abort:		        aha1542_old_abort,	\                     reset:			aha1542_old_reset,	\		     eh_abort_handler:		aha1542_abort,		\		     eh_device_reset_handler:	aha1542_dev_reset,	\		     eh_bus_reset_handler:	aha1542_bus_reset,	\		     eh_host_reset_handler:	aha1542_host_reset,	\		     bios_param:		aha1542_biosparam,      \		     can_queue:			AHA1542_MAILBOXES, 	\		     this_id:			7, 			\		     sg_tablesize:		AHA1542_SCATTER, 	\		     cmd_per_lun:		AHA1542_CMDLUN, 	\		     unchecked_isa_dma:		1, 			\		     use_clustering:		ENABLE_CLUSTERING,	\		     use_new_eh_code:		1}#endif

⌨️ 快捷键说明

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