📄 aha1542.h
字号:
#ifndef _AHA1542_H/* $Id: aha1542.h,v 1.1 1999/04/26 05:54:12 tb Exp $ * * Header file for the adaptec 1542 driver for Linux * * $Log: aha1542.h,v $ * Revision 1.1 1999/04/26 05:54:12 tb * 1998-11-30 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp> * * Clean up linux emulation code to make it architecture-independent * as much as possible. * * * linux: Renamed from linuxdev. * * Makefile.in (objfiles): Add linux.o instead of linuxdev.o. * (MAKE): New variable. Used for the linux.o target. * * configure.in: Add AC_CHECK_TOOL(MAKE, make). * * i386/i386/spl.h: Include <i386/ipl.h>, for compatibility with * OSF Mach 3.0. Suggested by Elgin Lee <ehl@funghi.com>. * * linux/src: Renamed from linux/linux. * * linux/dev: Renamed from linux/mach. * * linux/Drivers.in (AC_INIT): Use dev/include/linux/autoconf.h, * instead of mach/include/linux/autoconf.h. * * Makefile.in (all): Target ../linux.o instead of ../linuxdev.o. * * linux/dev/drivers/block/genhd.c: Include <machine/spl.h> instead * of <i386/ipl.h>. * * linux/dev/drivers/net/auto_irq.c: Remove unneeded header files, * <i386/ipl.h> and <i386/pic.h>. * * linux/dev/init/main.c: Many i386-dependent codes moved to ... * * linux/dev/arch/i386/irq.c: ... here. * * linux/dev/arch/i386/setup.c: New file. * * linux/dev/arch/i386/linux_emul.h: Likewise. * * linux/dev/arch/i386/glue/timer.c: Merged into sched.c. * * linux/dev/arch/i386/glue/sched.c: Include <machine/spl.h> instead * of <i386/ipl.h>, and moved to ... * * linux/dev/kernel/sched.c: ... here. * * linux/dev/arch/i386/glue/block.c: Include <machine/spl.h> and * <linux_emul.h>, instead of i386-dependent header files, and * moved to ... * * linux/dev/glue/blocl.c: ... here. * * linux/dev/arch/i386/glue/net.c: Include <machine/spl.h> and * <linux_emul.h>, instead of i386-dependent header files, and * moved to ... * * linux/dev/glue/net.c: ... here. * * linux/dev/arch/i386/glue/misc.c: Remove `x86' and moved to ... * * linux/dev/glue/misc.c: ... here. * * linux/dev/arch/i386/glue/kmem.c: Moved to ... * * linux/dev/glue/kmem.c: ... here. * * 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 *);int aha1542_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 { NULL, NULL, \ &proc_scsi_aha1542,/* proc_dir_entry */ \ NULL, \ "Adaptec 1542", \ aha1542_detect, \ NULL, \ NULL, \ aha1542_command, \ aha1542_queuecommand, \ aha1542_abort, \ aha1542_reset, \ NULL, \ aha1542_biosparam, \ AHA1542_MAILBOXES, \ 7, \ AHA1542_SCATTER, \ AHA1542_CMDLUN, \ 0, \ 1, \ ENABLE_CLUSTERING}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -