scsi_tape.h revision 1.7 1 1.7 thorpej /* $NetBSD: scsi_tape.h,v 1.7 1996/01/11 03:36:34 thorpej Exp $ */
2 1.5 cgd
3 1.1 cgd /*
4 1.4 mycroft * Copyright (c) 1994 Charles Hannum. All rights reserved.
5 1.4 mycroft *
6 1.4 mycroft * Redistribution and use in source and binary forms, with or without
7 1.4 mycroft * modification, are permitted provided that the following conditions
8 1.4 mycroft * are met:
9 1.4 mycroft * 1. Redistributions of source code must retain the above copyright
10 1.4 mycroft * notice, this list of conditions and the following disclaimer.
11 1.4 mycroft * 2. Redistributions in binary form must reproduce the above copyright
12 1.4 mycroft * notice, this list of conditions and the following disclaimer in the
13 1.4 mycroft * documentation and/or other materials provided with the distribution.
14 1.4 mycroft * 3. All advertising materials mentioning features or use of this software
15 1.4 mycroft * must display the following acknowledgement:
16 1.4 mycroft * This product includes software developed by Charles Hannum.
17 1.4 mycroft * 4. The name of the author may not be used to endorse or promote products
18 1.4 mycroft * derived from this software without specific prior written permission.
19 1.4 mycroft *
20 1.4 mycroft * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 1.4 mycroft * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 1.4 mycroft * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 1.4 mycroft * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 1.4 mycroft * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 1.4 mycroft * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 1.4 mycroft * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 1.4 mycroft * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 1.4 mycroft * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 1.4 mycroft * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 1.3 mycroft */
31 1.3 mycroft
32 1.3 mycroft /*
33 1.4 mycroft * Originally written by Julian Elischer (julian (at) tfs.com)
34 1.1 cgd * for TRW Financial Systems.
35 1.1 cgd *
36 1.1 cgd * TRW Financial Systems, in accordance with their agreement with Carnegie
37 1.1 cgd * Mellon University, makes this software available to CMU to distribute
38 1.1 cgd * or use in any manner that they see fit as long as this message is kept with
39 1.1 cgd * the software. For this reason TFS also grants any other persons or
40 1.1 cgd * organisations permission to use or modify this software.
41 1.1 cgd *
42 1.1 cgd * TFS supplies this software to be publicly redistributed
43 1.1 cgd * on the understanding that TFS is not responsible for the correct
44 1.1 cgd * functioning of this software in any circumstances.
45 1.1 cgd *
46 1.4 mycroft * Ported to run under 386BSD by Julian Elischer (julian (at) tfs.com) Sept 1992
47 1.1 cgd */
48 1.1 cgd
49 1.1 cgd /*
50 1.4 mycroft * SCSI tape interface description
51 1.1 cgd */
52 1.3 mycroft
53 1.4 mycroft #ifndef _SCSI_TAPE_H_
54 1.4 mycroft #define _SCSI_TAPE_H_ 1
55 1.1 cgd
56 1.1 cgd /*
57 1.3 mycroft * SCSI command formats
58 1.1 cgd */
59 1.1 cgd
60 1.4 mycroft #define READ 0x08
61 1.4 mycroft #define WRITE 0x0a
62 1.4 mycroft struct scsi_rw_tape {
63 1.6 mycroft u_char opcode;
64 1.3 mycroft u_char byte2;
65 1.4 mycroft #define SRW_FIXED 0x01
66 1.1 cgd u_char len[3];
67 1.3 mycroft u_char control;
68 1.4 mycroft };
69 1.1 cgd
70 1.4 mycroft #define SPACE 0x11
71 1.4 mycroft struct scsi_space {
72 1.6 mycroft u_char opcode;
73 1.3 mycroft u_char byte2;
74 1.4 mycroft #define SS_CODE 0x03
75 1.4 mycroft #define SP_BLKS 0x00
76 1.4 mycroft #define SP_FILEMARKS 0x01
77 1.4 mycroft #define SP_SEQ_FILEMARKS 0x02
78 1.4 mycroft #define SP_EOM 0x03
79 1.1 cgd u_char number[3];
80 1.3 mycroft u_char control;
81 1.4 mycroft };
82 1.1 cgd
83 1.4 mycroft #define WRITE_FILEMARKS 0x10
84 1.4 mycroft struct scsi_write_filemarks {
85 1.6 mycroft u_char opcode;
86 1.3 mycroft u_char byte2;
87 1.1 cgd u_char number[3];
88 1.3 mycroft u_char control;
89 1.4 mycroft };
90 1.1 cgd
91 1.4 mycroft #define REWIND 0x01
92 1.4 mycroft struct scsi_rewind {
93 1.6 mycroft u_char opcode;
94 1.3 mycroft u_char byte2;
95 1.4 mycroft #define SR_IMMED 0x01
96 1.1 cgd u_char unused[3];
97 1.3 mycroft u_char control;
98 1.4 mycroft };
99 1.1 cgd
100 1.4 mycroft #define LOAD 0x1b
101 1.4 mycroft struct scsi_load {
102 1.6 mycroft u_char opcode;
103 1.3 mycroft u_char byte2;
104 1.4 mycroft #define SL_IMMED 0x01
105 1.1 cgd u_char unused[2];
106 1.3 mycroft u_char how;
107 1.4 mycroft #define LD_UNLOAD 0x00
108 1.4 mycroft #define LD_LOAD 0x01
109 1.4 mycroft #define LD_RETENSION 0x02
110 1.3 mycroft u_char control;
111 1.4 mycroft };
112 1.3 mycroft
113 1.7 thorpej #define ERASE 0x19
114 1.7 thorpej struct scsi_erase {
115 1.7 thorpej u_char opcode;
116 1.7 thorpej u_char byte2;
117 1.7 thorpej #define SE_LONG 0x01
118 1.7 thorpej #define SE_IMMED 0x02
119 1.7 thorpej u_char unused[3];
120 1.7 thorpej u_char control;
121 1.7 thorpej };
122 1.7 thorpej
123 1.4 mycroft #define READ_BLOCK_LIMITS 0x05
124 1.4 mycroft struct scsi_block_limits {
125 1.6 mycroft u_char opcode;
126 1.3 mycroft u_char byte2;
127 1.1 cgd u_char unused[3];
128 1.3 mycroft u_char control;
129 1.4 mycroft };
130 1.1 cgd
131 1.4 mycroft struct scsi_block_limits_data {
132 1.1 cgd u_char reserved;
133 1.1 cgd u_char max_length_2; /* Most significant */
134 1.1 cgd u_char max_length_1;
135 1.1 cgd u_char max_length_0; /* Least significant */
136 1.1 cgd u_char min_length_1; /* Most significant */
137 1.1 cgd u_char min_length_0; /* Least significant */
138 1.7 thorpej };
139 1.7 thorpej
140 1.7 thorpej /* See SCSI-II spec 9.3.3.1 */
141 1.7 thorpej struct scsi_tape_dev_conf_page {
142 1.7 thorpej u_char pagecode; /* 0x10 */
143 1.7 thorpej u_char pagelength; /* 0x0e */
144 1.7 thorpej u_char byte2;
145 1.7 thorpej #define SMT_CAP 0x40 /* change active partition */
146 1.7 thorpej #define SMT_CAF 0x20 /* change active format */
147 1.7 thorpej #define SMT_AFMASK 0x1f /* active format mask */
148 1.7 thorpej u_char active_partition;
149 1.7 thorpej u_char wb_full_ratio;
150 1.7 thorpej u_char rb_empty_ratio;
151 1.7 thorpej u_char wrdelay_time_1; /* MSB */
152 1.7 thorpej u_char wrdelay_time_0; /* LSB */
153 1.7 thorpej u_char byte8;
154 1.7 thorpej #define SMT_DBR 0x80 /* data buffer recovery */
155 1.7 thorpej #define SMT_BIS 0x40 /* block identifiers supported */
156 1.7 thorpej #define SMT_RSMK 0x20 /* report setmarks */
157 1.7 thorpej #define SMT_AVC 0x10 /* automatic velocity control */
158 1.7 thorpej #define SMT_SOCF_MASK 0xc0 /* stop on consecutive formats */
159 1.7 thorpej #define SMT_RBO 0x20 /* recover buffer order */
160 1.7 thorpej #define SMT_REW 0x10 /* report early warning */
161 1.7 thorpej u_char gap_size;
162 1.7 thorpej u_char byte10;
163 1.7 thorpej #define SMT_EODDEFINED 0xe0 /* EOD defined */
164 1.7 thorpej #define SMT_EEG 0x10 /* enable EOD generation */
165 1.7 thorpej #define SMT_SEW 0x80 /* synchronize at early warning */
166 1.7 thorpej u_char ew_bufsize_2; /* MSB */
167 1.7 thorpej u_char ew_bufsize_1; /* ... */
168 1.7 thorpej u_char ew_bufsize_0; /* LSB */
169 1.7 thorpej u_char sel_comp_alg;
170 1.7 thorpej #define SMT_COMP_NONE 0x00
171 1.7 thorpej #define SMT_COMP_DEFAULT 0x01
172 1.7 thorpej u_char reserved;
173 1.1 cgd };
174 1.1 cgd
175 1.3 mycroft /* defines for the device specific byte in the mode select/sense header */
176 1.3 mycroft #define SMH_DSP_SPEED 0x0F
177 1.3 mycroft #define SMH_DSP_BUFF_MODE 0x70
178 1.3 mycroft #define SMH_DSP_BUFF_MODE_OFF 0x00
179 1.3 mycroft #define SMH_DSP_BUFF_MODE_ON 0x10
180 1.3 mycroft #define SMH_DSP_BUFF_MODE_MLTI 0x20
181 1.3 mycroft #define SMH_DSP_WRITE_PROT 0x80
182 1.3 mycroft
183 1.3 mycroft /* A special for the CIPHER ST150S(old drive) */
184 1.4 mycroft struct block_desc_cipher {
185 1.3 mycroft u_char density;
186 1.3 mycroft u_char nblocks[3];
187 1.3 mycroft u_char reserved;
188 1.3 mycroft u_char blklen[3];
189 1.3 mycroft u_char other;
190 1.4 mycroft #define ST150_SEC 0x01 /* soft error count */
191 1.4 mycroft #define SR150_AUI 0x02 /* autoload inhibit */
192 1.1 cgd };
193 1.1 cgd
194 1.3 mycroft /**********************************************************************
195 1.3 mycroft from the scsi2 spec
196 1.3 mycroft Value Tracks Density(bpi) Code Type Reference Note
197 1.3 mycroft 0x1 9 800 NRZI R X3.22-1983 2
198 1.3 mycroft 0x2 9 1600 PE R X3.39-1986 2
199 1.3 mycroft 0x3 9 6250 GCR R X3.54-1986 2
200 1.3 mycroft 0x5 4/9 8000 GCR C X3.136-1986 1
201 1.3 mycroft 0x6 9 3200 PE R X3.157-1987 2
202 1.3 mycroft 0x7 4 6400 IMFM C X3.116-1986 1
203 1.3 mycroft 0x8 4 8000 GCR CS X3.158-1986 1
204 1.3 mycroft 0x9 18 37871 GCR C X3B5/87-099 2
205 1.3 mycroft 0xA 22 6667 MFM C X3B5/86-199 1
206 1.3 mycroft 0xB 4 1600 PE C X3.56-1986 1
207 1.3 mycroft 0xC 24 12690 GCR C HI-TC1 1,5
208 1.3 mycroft 0xD 24 25380 GCR C HI-TC2 1,5
209 1.3 mycroft 0xF 15 10000 GCR C QIC-120 1,5
210 1.3 mycroft 0x10 18 10000 GCR C QIC-150 1,5
211 1.3 mycroft 0x11 26 16000 GCR C QIC-320(525?) 1,5
212 1.3 mycroft 0x12 30 51667 RLL C QIC-1350 1,5
213 1.3 mycroft 0x13 1 61000 DDS CS X3B5/88-185A 4
214 1.3 mycroft 0x14 1 43245 RLL CS X3.202-1991 4
215 1.3 mycroft 0x15 1 45434 RLL CS ECMA TC17 4
216 1.3 mycroft 0x16 48 10000 MFM C X3.193-1990 1
217 1.3 mycroft 0x17 48 42500 MFM C X3B5/91-174 1
218 1.3 mycroft
219 1.3 mycroft where Code means:
220 1.3 mycroft NRZI Non Return to Zero, change on ones
221 1.3 mycroft GCR Group Code Recording
222 1.3 mycroft PE Phase Encoded
223 1.3 mycroft IMFM Inverted Modified Frequency Modulation
224 1.3 mycroft MFM Modified Frequency Modulation
225 1.3 mycroft DDS Dat Data Storage
226 1.3 mycroft RLL Run Length Encoding
227 1.3 mycroft
228 1.3 mycroft where Type means:
229 1.4 mycroft R Reel-to-Reel
230 1.3 mycroft C Cartridge
231 1.3 mycroft CS cassette
232 1.3 mycroft
233 1.3 mycroft where Notes means:
234 1.3 mycroft 1 Serial Recorded
235 1.3 mycroft 2 Parallel Recorded
236 1.3 mycroft 3 Old format know as QIC-11
237 1.3 mycroft 4 Helical Scan
238 1.3 mycroft 5 Not ANSI standard, rather industry standard.
239 1.3 mycroft ********************************************************************/
240 1.3 mycroft
241 1.3 mycroft #define HALFINCH_800 0x01
242 1.3 mycroft #define HALFINCH_1600 0x02
243 1.3 mycroft #define HALFINCH_6250 0x03
244 1.3 mycroft #define QIC_11 0x04 /* from Archive 150S Theory of Op. XXX */
245 1.3 mycroft #define QIC_24 0x05 /* may be bad, works for CIPHER ST150S XXX */
246 1.3 mycroft #define QIC_120 0x0f
247 1.3 mycroft #define QIC_150 0x10
248 1.3 mycroft #define QIC_320 0x11
249 1.3 mycroft #define QIC_525 0x11
250 1.3 mycroft #define QIC_1320 0x12
251 1.3 mycroft #define DDS 0x13
252 1.3 mycroft #define DAT_1 0x13
253 1.1 cgd
254 1.4 mycroft #endif /* _SCSI_TAPE_H_ */
255