|
|
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(int);
1.1.1.2 ! root 16: int seagate_st0x_command(unsigned char target, const void *cmnd, void *buff,
! 17: int bufflen);
! 18: int seagate_st0x_queue_command(unsigned char target, const void *cmnd,
! 19: void *buff, int bufflen, void (*done)(int, int));
! 20:
1.1 root 21: int seagate_st0x_abort(int);
22: char *seagate_st0x_info(void);
23: int seagate_st0x_reset(void);
24:
25: #ifndef NULL
26: #define NULL 0
27: #endif
28:
29: #define SEAGATE_ST0X {"Seagate ST-01/ST-02", seagate_st0x_detect, \
30: seagate_st0x_info, seagate_st0x_command, \
1.1.1.2 ! root 31: seagate_st0x_queue_command, seagate_st0x_abort, \
! 32: seagate_st0x_reset, 1, 7, 0}
1.1 root 33: #endif
34:
35:
36: /*
37: defining PARITY causes parity data to be checked
38: */
39:
40: #define PARITY
41:
42: /*
43: defining ARBITRATE causes the arbitration sequence to be used. And speed to drop by a
44: factor of ten.
45: */
46:
47: #undef ARBITRATE
48:
49:
50: /*
51: Thanks to Brian Antoine for the example code in his Messy-Loss ST-01
52: driver, and Mitsugu Suzuki for information on the ST-01
53: SCSI host.
54: */
55:
56: /*
57: CONTROL defines
58: */
59:
60: #define CMD_RST 0x01
61: #define CMD_SEL 0x02
62: #define CMD_BSY 0x04
63: #define CMD_ATTN 0x08
64: #define CMD_START_ARB 0x10
65: #define CMD_EN_PARITY 0x20
66: #define CMD_INTR 0x40
67: #define CMD_DRVR_ENABLE 0x80
68:
69: /*
70: STATUS
71: */
72:
73: #define STAT_BSY 0x01
74: #define STAT_MSG 0x02
75: #define STAT_IO 0x04
76: #define STAT_CD 0x08
77: #define STAT_REQ 0x10
78: #define STAT_SEL 0x20
79: #define STAT_PARITY 0x40
80: #define STAT_ARB_CMPL 0x80
81:
82: /*
83: REQUESTS
84: */
85:
86: #define REQ_MASK (STAT_CD | STAT_IO | STAT_MSG)
87: #define REQ_DATAOUT 0
88: #define REQ_DATAIN STAT_IO
89: #define REQ_CMDOUT STAT_CD
90: #define REQ_STATIN (STAT_CD | STAT_IO)
91: #define REQ_MSGOUT (STAT_MSG | STAT_CD)
92: #define REQ_MSGIN (STAT_MSG | STAT_CD | STAT_IO)
93:
94: extern volatile int seagate_st0x_timeout;
95:
96: #ifdef PARITY
97: #define BASE_CMD CMD_EN_PARITY
98: #else
99: #define BASE_CMD 0
100: #endif
101:
102: /*
103: Debugging code
104: */
105:
106: #define PHASE_BUS_FREE 1
107: #define PHASE_ARBITRATION 2
108: #define PHASE_SELECTION 4
109: #define PHASE_DATAIN 8
110: #define PHASE_DATAOUT 0x10
111: #define PHASE_CMDOUT 0x20
112: #define PHASE_MSGIN 0x40
113: #define PHASE_MSGOUT 0x80
114: #define PHASE_STATUSIN 0x100
115: #define PHASE_ETC (PHASE_DATAIN | PHASE_DATA_OUT | PHASE_CMDOUT | PHASE_MSGIN | PHASE_MSGOUT | PHASE_STATUSIN)
116: #define PRINT_COMMAND 0x200
117: #define PHASE_EXIT 0x400
1.1.1.2 ! root 118: #define PHASE_RESELECT 0x800
1.1 root 119:
120: /*
1.1.1.2 ! root 121: * Control options - these are timeouts specified in .01 seconds.
! 122: */
1.1 root 123:
124: #define ST0X_BUS_FREE_DELAY 25
1.1.1.2 ! root 125: #define ST0X_SELECTION_DELAY 3
! 126:
! 127: #define eoi() __asm__("push %%eax\nmovb $0x20, %%al\noutb %%al, $0x20\npop %%eax"::)
! 128:
1.1 root 129:
130: #endif
131:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.