[BACK]Return to scsi_tape.h CVS log [TXT][DIR] Up to [local] / sys / scsi

Annotation of sys/scsi/scsi_tape.h, Revision 1.1.1.1

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

CVSweb