Commit | Line | Data |
---|---|---|
15637ed4 RG |
1 | /* |
2 | * SCSI tape interface description | |
3 | */ | |
4 | ||
5 | /* | |
6 | * Written by Julian Elischer (julian@tfs.com) | |
7 | * for TRW Financial Systems. | |
8 | * | |
9 | * TRW Financial Systems, in accordance with their agreement with Carnegie | |
10 | * Mellon University, makes this software available to CMU to distribute | |
11 | * or use in any manner that they see fit as long as this message is kept with | |
12 | * the software. For this reason TFS also grants any other persons or | |
13 | * organisations permission to use or modify this software. | |
14 | * | |
15 | * TFS supplies this software to be publicly redistributed | |
16 | * on the understanding that TFS is not responsible for the correct | |
17 | * functioning of this software in any circumstances. | |
18 | * | |
d4284689 RG |
19 | */ |
20 | ||
21 | /* | |
15637ed4 | 22 | * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992 |
98639498 | 23 | * |
519fb2b7 | 24 | * $Id: scsi_tape.h,v 1.8 93/08/31 21:40:16 julian Exp Locker: julian $ |
15637ed4 | 25 | */ |
519fb2b7 RG |
26 | #ifndef SCSI_SCSI_TAPE_H |
27 | #define SCSI_SCSI_TAPE_H 1 | |
15637ed4 | 28 | |
d4284689 RG |
29 | |
30 | ||
15637ed4 | 31 | /* |
d4284689 | 32 | * SCSI command formats |
15637ed4 RG |
33 | */ |
34 | ||
d4284689 | 35 | |
15637ed4 RG |
36 | struct scsi_rw_tape |
37 | { | |
38 | u_char op_code; | |
869c4419 RG |
39 | u_char byte2; |
40 | #define SRWT_FIXED 0x01 | |
15637ed4 | 41 | u_char len[3]; |
869c4419 | 42 | u_char control; |
15637ed4 RG |
43 | } rw_tape; |
44 | ||
45 | struct scsi_space | |
46 | { | |
47 | u_char op_code; | |
869c4419 RG |
48 | u_char byte2; |
49 | #define SS_CODE 0x03 | |
15637ed4 | 50 | u_char number[3]; |
869c4419 | 51 | u_char control; |
15637ed4 RG |
52 | } space; |
53 | #define SP_BLKS 0 | |
54 | #define SP_FILEMARKS 1 | |
55 | #define SP_SEQ_FILEMARKS 2 | |
56 | #define SP_EOM 3 | |
57 | ||
58 | struct scsi_write_filemarks | |
59 | { | |
60 | u_char op_code; | |
869c4419 | 61 | u_char byte2; |
15637ed4 | 62 | u_char number[3]; |
869c4419 | 63 | u_char control; |
15637ed4 RG |
64 | } write_filemarks; |
65 | ||
66 | struct scsi_rewind | |
67 | { | |
68 | u_char op_code; | |
869c4419 RG |
69 | u_char byte2; |
70 | #define SR_IMMED 0x01 | |
15637ed4 | 71 | u_char unused[3]; |
869c4419 | 72 | u_char control; |
15637ed4 RG |
73 | } rewind; |
74 | ||
75 | struct scsi_load | |
76 | { | |
77 | u_char op_code; | |
869c4419 RG |
78 | u_char byte2; |
79 | #define SL_IMMED 0x01 | |
15637ed4 | 80 | u_char unused[2]; |
869c4419 RG |
81 | u_char how; |
82 | u_char control; | |
15637ed4 RG |
83 | } load; |
84 | #define LD_UNLOAD 0 | |
85 | #define LD_LOAD 1 | |
869c4419 RG |
86 | #define LD_RETEN 2 |
87 | ||
15637ed4 RG |
88 | |
89 | struct scsi_blk_limits | |
90 | { | |
91 | u_char op_code; | |
869c4419 | 92 | u_char byte2; |
15637ed4 | 93 | u_char unused[3]; |
869c4419 | 94 | u_char control; |
15637ed4 RG |
95 | } blk_limits; |
96 | ||
97 | /* | |
98 | * Opcodes | |
99 | */ | |
100 | ||
101 | #define REWIND 0x01 | |
102 | #define READ_BLK_LIMITS 0x05 | |
103 | #define READ_COMMAND_TAPE 0x08 | |
104 | #define WRITE_COMMAND_TAPE 0x0a | |
105 | #define WRITE_FILEMARKS 0x10 | |
106 | #define SPACE 0x11 | |
107 | #define LOAD_UNLOAD 0x1b /* same as above */ | |
108 | ||
109 | ||
110 | ||
111 | struct scsi_blk_limits_data | |
112 | { | |
113 | u_char reserved; | |
114 | u_char max_length_2; /* Most significant */ | |
115 | u_char max_length_1; | |
116 | u_char max_length_0; /* Least significant */ | |
117 | u_char min_length_1; /* Most significant */ | |
118 | u_char min_length_0; /* Least significant */ | |
119 | }; | |
120 | ||
869c4419 RG |
121 | /* defines for the device specific byte in the mode select/sense header */ |
122 | #define SMH_DSP_SPEED 0x0F | |
123 | #define SMH_DSP_BUFF_MODE 0x70 | |
124 | #define SMH_DSP_BUFF_MODE_OFF 0x00 | |
125 | #define SMH_DSP_BUFF_MODE_ON 0x10 | |
126 | #define SMH_DSP_BUFF_MODE_MLTI 0x20 | |
127 | #define SMH_DSP_WRITE_PROT 0x80 | |
15637ed4 | 128 | |
a0becc21 NW |
129 | /* A special for the CIPHER ST150S(old drive) */ |
130 | struct blk_desc_cipher | |
131 | { | |
132 | u_char density; | |
133 | u_char nblocks[3]; | |
134 | u_char reserved; | |
135 | u_char blklen[3]; | |
869c4419 RG |
136 | u_char other; |
137 | #define ST150_SEC 0x01 /* soft error count */ | |
138 | #define SR150_AUI 0x02 /* autoload inhibit */ | |
a0becc21 NW |
139 | }; |
140 | ||
141 | ||
15637ed4 | 142 | |
a0becc21 NW |
143 | /********************************************************************** |
144 | from the scsi2 spec | |
145 | Value Tracks Density(bpi) Code Type Reference Note | |
146 | 0x1 9 800 NRZI R X3.22-1983 2 | |
147 | 0x2 9 1600 PE R X3.39-1986 2 | |
148 | 0x3 9 6250 GCR R X3.54-1986 2 | |
149 | 0x5 4/9 8000 GCR C X3.136-1986 1 | |
150 | 0x6 9 3200 PE R X3.157-1987 2 | |
151 | 0x7 4 6400 IMFM C X3.116-1986 1 | |
152 | 0x8 4 8000 GCR CS X3.158-1986 1 | |
153 | 0x9 18 37871 GCR C X3B5/87-099 2 | |
154 | 0xA 22 6667 MFM C X3B5/86-199 1 | |
155 | 0xB 4 1600 PE C X3.56-1986 1 | |
156 | 0xC 24 12690 GCR C HI-TC1 1,5 | |
157 | 0xD 24 25380 GCR C HI-TC2 1,5 | |
158 | 0xF 15 10000 GCR C QIC-120 1,5 | |
159 | 0x10 18 10000 GCR C QIC-150 1,5 | |
160 | 0x11 26 16000 GCR C QIC-320(525?) 1,5 | |
161 | 0x12 30 51667 RLL C QIC-1350 1,5 | |
162 | 0x13 1 61000 DDS CS X3B5/88-185A 4 | |
163 | 0x14 1 43245 RLL CS X3.202-1991 4 | |
164 | 0x15 1 45434 RLL CS ECMA TC17 4 | |
165 | 0x16 48 10000 MFM C X3.193-1990 1 | |
166 | 0x17 48 42500 MFM C X3B5/91-174 1 | |
167 | ||
168 | where Code means: | |
169 | NRZI Non Return to Zero, change on ones | |
170 | GCR Group Code Recording | |
171 | PE Phase Encoded | |
172 | IMFM Inverted Modified Frequency Modulation | |
173 | MFM Modified Frequency Modulation | |
174 | DDS Dat Data Storage | |
175 | RLL Run Length Encoding | |
176 | ||
177 | where Type means: | |
178 | R Real-to-Real | |
179 | C Cartridge | |
180 | CS cassette | |
181 | ||
182 | where Notes means: | |
183 | 1 Serial Recorded | |
184 | 2 Parallel Recorded | |
185 | 3 Old format know as QIC-11 | |
186 | 4 Helical Scan | |
187 | 5 Not ANSI standard, rather industry standard. | |
188 | ||
189 | ********************************************************************/ | |
190 | ||
191 | #define HALFINCH_800 0x01 | |
192 | #define HALFINCH_1600 0x02 | |
193 | #define HALFINCH_6250 0x03 | |
d4284689 | 194 | #define QIC_11 0x04 /* from Archive 150S Theory of Op. XXX */ |
a0becc21 NW |
195 | #define QIC_24 0x05 /* may be bad, works for CIPHER ST150S XXX */ |
196 | #define QIC_120 0x0f | |
197 | #define QIC_150 0x10 | |
198 | #define QIC_320 0x11 | |
199 | #define QIC_525 0x11 | |
200 | #define QIC_1320 0x12 | |
0269d546 | 201 | #define DDS 0x13 |
519fb2b7 | 202 | #define DAT_1 0x13 |
15637ed4 | 203 | |
519fb2b7 | 204 | #endif /*SCSI_SCSI_TAPE_H*/ |