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