Home | History | Annotate | Line # | Download | only in scsipi
scsi_tape.h revision 1.3
      1 /*
      2  * SCSI tape interface description
      3  */
      4 
      5 /*
      6  * Written by Julian Elischer (julian (at) 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  *
     19  */
     20 
     21 /*
     22  * Ported to run under 386BSD by Julian Elischer (julian (at) tfs.com) Sept 1992
     23  *
     24  *	$Id: scsi_tape.h,v 1.3 1994/03/29 04:29:36 mycroft Exp $
     25  */
     26 #ifndef	SCSI_SCSI_TAPE_H
     27 #define SCSI_SCSI_TAPE_H 1
     28 
     29 
     30 
     31 /*
     32  * SCSI command formats
     33  */
     34 
     35 
     36 struct scsi_rw_tape
     37 {
     38 	u_char	op_code;
     39 	u_char	byte2;
     40 #define	SRWT_FIXED	0x01
     41 	u_char	len[3];
     42 	u_char	control;
     43 } rw_tape;
     44 
     45 struct scsi_space
     46 {
     47 	u_char	op_code;
     48 	u_char	byte2;
     49 #define	SS_CODE	0x03
     50 	u_char	number[3];
     51 	u_char	control;
     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;
     61 	u_char	byte2;
     62 	u_char	number[3];
     63 	u_char	control;
     64 } write_filemarks;
     65 
     66 struct scsi_rewind
     67 {
     68 	u_char	op_code;
     69 	u_char	byte2;
     70 #define	SR_IMMED	0x01
     71 	u_char	unused[3];
     72 	u_char	control;
     73 } rewind;
     74 
     75 struct scsi_load
     76 {
     77 	u_char	op_code;
     78 	u_char	byte2;
     79 #define	SL_IMMED	0x01
     80 	u_char	unused[2];
     81 	u_char	how;
     82 	u_char	control;
     83 } load;
     84 #define LD_UNLOAD 0
     85 #define LD_LOAD 1
     86 #define LD_RETEN 2
     87 
     88 
     89 struct scsi_blk_limits
     90 {
     91 	u_char	op_code;
     92 	u_char	byte2;
     93 	u_char	unused[3];
     94 	u_char	control;
     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 
    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
    128 
    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];
    136 	u_char  other;
    137 #define ST150_SEC	0x01	/* soft error count */
    138 #define	SR150_AUI	0x02	/* autoload inhibit */
    139 };
    140 
    141 
    142 
    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
    194 #define	QIC_11		0x04	/* from Archive 150S Theory of Op. XXX	*/
    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
    201 #define DDS		0x13
    202 #define DAT_1		0x13
    203 
    204 #endif /*SCSI_SCSI_TAPE_H*/
    205