[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     ! 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