|
|
1.1 ! root 1: /* ! 2: * seagate.h Copyright (C) 1992 Drew Eckhardt ! 3: * low level scsi driver header for ST01/ST02 by ! 4: * Drew Eckhardt ! 5: * ! 6: * <[email protected]> ! 7: */ ! 8: ! 9: #ifndef _SEAGATE_H ! 10: #define SEAGATE_H ! 11: /* ! 12: $Header ! 13: */ ! 14: #ifndef ASM ! 15: int seagate_st0x_detect(Scsi_Host_Template *); ! 16: int seagate_st0x_command(Scsi_Cmnd *); ! 17: int seagate_st0x_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); ! 18: ! 19: int seagate_st0x_abort(Scsi_Cmnd *); ! 20: const char *seagate_st0x_info(struct Scsi_Host *); ! 21: int seagate_st0x_reset(Scsi_Cmnd *, unsigned int); ! 22: int seagate_st0x_proc_info(char *,char **,off_t,int,int,int); ! 23: ! 24: #ifndef NULL ! 25: #define NULL 0 ! 26: #endif ! 27: ! 28: #include <linux/kdev_t.h> ! 29: int seagate_st0x_biosparam(Disk *, kdev_t, int*); ! 30: ! 31: #define SEAGATE_ST0X { NULL, NULL, NULL, seagate_st0x_proc_info, \ ! 32: NULL, seagate_st0x_detect, \ ! 33: NULL, \ ! 34: seagate_st0x_info, seagate_st0x_command, \ ! 35: seagate_st0x_queue_command, seagate_st0x_abort, \ ! 36: seagate_st0x_reset, NULL, seagate_st0x_biosparam, \ ! 37: 1, 7, SG_ALL, 1, 0, 0, DISABLE_CLUSTERING} ! 38: #endif ! 39: ! 40: ! 41: /* ! 42: defining PARITY causes parity data to be checked ! 43: */ ! 44: ! 45: #define PARITY ! 46: ! 47: ! 48: /* ! 49: Thanks to Brian Antoine for the example code in his Messy-Loss ST-01 ! 50: driver, and Mitsugu Suzuki for information on the ST-01 ! 51: SCSI host. ! 52: */ ! 53: ! 54: /* ! 55: CONTROL defines ! 56: */ ! 57: ! 58: #define CMD_RST 0x01 ! 59: #define CMD_SEL 0x02 ! 60: #define CMD_BSY 0x04 ! 61: #define CMD_ATTN 0x08 ! 62: #define CMD_START_ARB 0x10 ! 63: #define CMD_EN_PARITY 0x20 ! 64: #define CMD_INTR 0x40 ! 65: #define CMD_DRVR_ENABLE 0x80 ! 66: ! 67: /* ! 68: STATUS ! 69: */ ! 70: ! 71: #define STAT_BSY 0x01 ! 72: #define STAT_MSG 0x02 ! 73: #define STAT_IO 0x04 ! 74: #define STAT_CD 0x08 ! 75: #define STAT_REQ 0x10 ! 76: #define STAT_SEL 0x20 ! 77: #define STAT_PARITY 0x40 ! 78: #define STAT_ARB_CMPL 0x80 ! 79: ! 80: /* ! 81: REQUESTS ! 82: */ ! 83: ! 84: #define REQ_MASK (STAT_CD | STAT_IO | STAT_MSG) ! 85: #define REQ_DATAOUT 0 ! 86: #define REQ_DATAIN STAT_IO ! 87: #define REQ_CMDOUT STAT_CD ! 88: #define REQ_STATIN (STAT_CD | STAT_IO) ! 89: #define REQ_MSGOUT (STAT_MSG | STAT_CD) ! 90: #define REQ_MSGIN (STAT_MSG | STAT_CD | STAT_IO) ! 91: ! 92: extern volatile int seagate_st0x_timeout; ! 93: ! 94: #ifdef PARITY ! 95: #define BASE_CMD CMD_EN_PARITY ! 96: #else ! 97: #define BASE_CMD 0 ! 98: #endif ! 99: ! 100: /* ! 101: Debugging code ! 102: */ ! 103: ! 104: #define PHASE_BUS_FREE 1 ! 105: #define PHASE_ARBITRATION 2 ! 106: #define PHASE_SELECTION 4 ! 107: #define PHASE_DATAIN 8 ! 108: #define PHASE_DATAOUT 0x10 ! 109: #define PHASE_CMDOUT 0x20 ! 110: #define PHASE_MSGIN 0x40 ! 111: #define PHASE_MSGOUT 0x80 ! 112: #define PHASE_STATUSIN 0x100 ! 113: #define PHASE_ETC (PHASE_DATAIN | PHASE_DATA_OUT | PHASE_CMDOUT | PHASE_MSGIN | PHASE_MSGOUT | PHASE_STATUSIN) ! 114: #define PRINT_COMMAND 0x200 ! 115: #define PHASE_EXIT 0x400 ! 116: #define PHASE_RESELECT 0x800 ! 117: #define DEBUG_FAST 0x1000 ! 118: #define DEBUG_SG 0x2000 ! 119: #define DEBUG_LINKED 0x4000 ! 120: #define DEBUG_BORKEN 0x8000 ! 121: ! 122: /* ! 123: * Control options - these are timeouts specified in .01 seconds. ! 124: */ ! 125: ! 126: /* 30, 20 work */ ! 127: #define ST0X_BUS_FREE_DELAY 25 ! 128: #define ST0X_SELECTION_DELAY 25 ! 129: ! 130: #define eoi() __asm__("push %%eax\nmovb $0x20, %%al\noutb %%al, $0x20\npop %%eax"::) ! 131: ! 132: #define SEAGATE 1 /* these determine the type of the controller */ ! 133: #define FD 2 ! 134: ! 135: #define ST0X_ID_STR "Seagate ST-01/ST-02" ! 136: #define FD_ID_STR "TMC-8XX/TMC-950" ! 137: ! 138: #endif ! 139:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.