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