|
|
1.1 ! root 1: #ifndef _AHA1542_H ! 2: ! 3: /* $Id: aha1542.h,v 1.1.1.1 1997/02/25 21:27:46 thomas Exp $ ! 4: * ! 5: * Header file for the adaptec 1542 driver for Linux ! 6: * ! 7: * $Log: aha1542.h,v $ ! 8: * Revision 1.1.1.1 1997/02/25 21:27:46 thomas ! 9: * Initial source ! 10: * ! 11: * Revision 1.1.1.1 1996/10/30 01:40:02 thomas ! 12: * Imported from UK22 ! 13: * ! 14: * Revision 1.1 1996/03/25 20:25:20 goel ! 15: * Linux driver merge. ! 16: * ! 17: * Revision 1.1 1992/07/24 06:27:38 root ! 18: * Initial revision ! 19: * ! 20: * Revision 1.2 1992/07/04 18:41:49 root ! 21: * Replaced distribution with current drivers ! 22: * ! 23: * Revision 1.3 1992/06/23 23:58:20 root ! 24: * Fixes. ! 25: * ! 26: * Revision 1.2 1992/05/26 22:13:23 root ! 27: * Changed bug that prevented DMA above first 2 mbytes. ! 28: * ! 29: * Revision 1.1 1992/05/22 21:00:29 root ! 30: * Initial revision ! 31: * ! 32: * Revision 1.1 1992/04/24 18:01:50 root ! 33: * Initial revision ! 34: * ! 35: * Revision 1.1 1992/04/02 03:23:13 drew ! 36: * Initial revision ! 37: * ! 38: * Revision 1.3 1992/01/27 14:46:29 tthorn ! 39: * *** empty log message *** ! 40: * ! 41: */ ! 42: ! 43: #include <linux/types.h> ! 44: #include <linux/kdev_t.h> ! 45: ! 46: /* I/O Port interface 4.2 */ ! 47: /* READ */ ! 48: #define STATUS(base) base ! 49: #define STST 0x80 /* Self Test in Progress */ ! 50: #define DIAGF 0x40 /* Internal Diagnostic Failure */ ! 51: #define INIT 0x20 /* Mailbox Initialization Required */ ! 52: #define IDLE 0x10 /* SCSI Host Adapter Idle */ ! 53: #define CDF 0x08 /* Command/Data Out Port Full */ ! 54: #define DF 0x04 /* Data In Port Full */ ! 55: #define INVDCMD 0x01 /* Invalid H A Command */ ! 56: #define STATMASK 0xfd /* 0x02 is reserved */ ! 57: ! 58: #define INTRFLAGS(base) (STATUS(base)+2) ! 59: #define ANYINTR 0x80 /* Any Interrupt */ ! 60: #define SCRD 0x08 /* SCSI Reset Detected */ ! 61: #define HACC 0x04 /* HA Command Complete */ ! 62: #define MBOA 0x02 /* MBO Empty */ ! 63: #define MBIF 0x01 /* MBI Full */ ! 64: #define INTRMASK 0x8f ! 65: ! 66: /* WRITE */ ! 67: #define CONTROL(base) STATUS(base) ! 68: #define HRST 0x80 /* Hard Reset */ ! 69: #define SRST 0x40 /* Soft Reset */ ! 70: #define IRST 0x20 /* Interrupt Reset */ ! 71: #define SCRST 0x10 /* SCSI Bus Reset */ ! 72: ! 73: /* READ/WRITE */ ! 74: #define DATA(base) (STATUS(base)+1) ! 75: #define CMD_NOP 0x00 /* No Operation */ ! 76: #define CMD_MBINIT 0x01 /* Mailbox Initialization */ ! 77: #define CMD_START_SCSI 0x02 /* Start SCSI Command */ ! 78: #define CMD_INQUIRY 0x04 /* Adapter Inquiry */ ! 79: #define CMD_EMBOI 0x05 /* Enable MailBox Out Interrupt */ ! 80: #define CMD_BUSON_TIME 0x07 /* Set Bus-On Time */ ! 81: #define CMD_BUSOFF_TIME 0x08 /* Set Bus-Off Time */ ! 82: #define CMD_DMASPEED 0x09 /* Set AT Bus Transfer Speed */ ! 83: #define CMD_RETDEVS 0x0a /* Return Installed Devices */ ! 84: #define CMD_RETCONF 0x0b /* Return Configuration Data */ ! 85: #define CMD_RETSETUP 0x0d /* Return Setup Data */ ! 86: #define CMD_ECHO 0x1f /* ECHO Command Data */ ! 87: ! 88: #define CMD_EXTBIOS 0x28 /* Return extend bios information only 1542C */ ! 89: #define CMD_MBENABLE 0x29 /* Set Mailbox Interface enable only 1542C */ ! 90: ! 91: /* Mailbox Definition 5.2.1 and 5.2.2 */ ! 92: struct mailbox { ! 93: unchar status; /* Command/Status */ ! 94: unchar ccbptr[3]; /* msb, .., lsb */ ! 95: }; ! 96: ! 97: /* This is used with scatter-gather */ ! 98: struct chain { ! 99: unchar datalen[3]; /* Size of this part of chain */ ! 100: unchar dataptr[3]; /* Location of data */ ! 101: }; ! 102: ! 103: /* These belong in scsi.h also */ ! 104: #define any2scsi(up, p) \ ! 105: (up)[0] = (((unsigned long)(p)) >> 16) ; \ ! 106: (up)[1] = (((unsigned long)(p)) >> 8); \ ! 107: (up)[2] = ((unsigned long)(p)); ! 108: ! 109: #define scsi2int(up) ( (((long)*(up)) << 16) + (((long)(up)[1]) << 8) + ((long)(up)[2]) ) ! 110: ! 111: #define xany2scsi(up, p) \ ! 112: (up)[0] = ((long)(p)) >> 24; \ ! 113: (up)[1] = ((long)(p)) >> 16; \ ! 114: (up)[2] = ((long)(p)) >> 8; \ ! 115: (up)[3] = ((long)(p)); ! 116: ! 117: #define xscsi2int(up) ( (((long)(up)[0]) << 24) + (((long)(up)[1]) << 16) \ ! 118: + (((long)(up)[2]) << 8) + ((long)(up)[3]) ) ! 119: ! 120: #define MAX_CDB 12 ! 121: #define MAX_SENSE 14 ! 122: ! 123: struct ccb { /* Command Control Block 5.3 */ ! 124: unchar op; /* Command Control Block Operation Code */ ! 125: unchar idlun; /* op=0,2:Target Id, op=1:Initiator Id */ ! 126: /* Outbound data transfer, length is checked*/ ! 127: /* Inbound data transfer, length is checked */ ! 128: /* Logical Unit Number */ ! 129: unchar cdblen; /* SCSI Command Length */ ! 130: unchar rsalen; /* Request Sense Allocation Length/Disable */ ! 131: unchar datalen[3]; /* Data Length (msb, .., lsb) */ ! 132: unchar dataptr[3]; /* Data Pointer */ ! 133: unchar linkptr[3]; /* Link Pointer */ ! 134: unchar commlinkid; /* Command Linking Identifier */ ! 135: unchar hastat; /* Host Adapter Status (HASTAT) */ ! 136: unchar tarstat; /* Target Device Status */ ! 137: unchar reserved[2]; ! 138: unchar cdb[MAX_CDB+MAX_SENSE];/* SCSI Command Descriptor Block */ ! 139: /* REQUEST SENSE */ ! 140: }; ! 141: ! 142: int aha1542_detect(Scsi_Host_Template *); ! 143: int aha1542_command(Scsi_Cmnd *); ! 144: int aha1542_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); ! 145: int aha1542_abort(Scsi_Cmnd *); ! 146: int aha1542_reset(Scsi_Cmnd *); ! 147: int aha1542_biosparam(Disk *, kdev_t, int*); ! 148: ! 149: #define AHA1542_MAILBOXES 8 ! 150: #define AHA1542_SCATTER 16 ! 151: #define AHA1542_CMDLUN 1 ! 152: ! 153: #ifndef NULL ! 154: #define NULL 0 ! 155: #endif ! 156: ! 157: extern struct proc_dir_entry proc_scsi_aha1542; ! 158: ! 159: #define AHA1542 { NULL, NULL, \ ! 160: &proc_scsi_aha1542,/* proc_dir_entry */ \ ! 161: NULL, \ ! 162: "Adaptec 1542", \ ! 163: aha1542_detect, \ ! 164: NULL, \ ! 165: NULL, \ ! 166: aha1542_command, \ ! 167: aha1542_queuecommand, \ ! 168: aha1542_abort, \ ! 169: aha1542_reset, \ ! 170: NULL, \ ! 171: aha1542_biosparam, \ ! 172: AHA1542_MAILBOXES, \ ! 173: 7, \ ! 174: AHA1542_SCATTER, \ ! 175: AHA1542_CMDLUN, \ ! 176: 0, \ ! 177: 1, \ ! 178: ENABLE_CLUSTERING} ! 179: ! 180: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.