Home | History | Annotate | Line # | Download | only in scsipi
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