123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- /* $OpenBSD: scsi_tape.h,v 1.9 2015/06/07 19:13:27 krw Exp $ */
- /* $NetBSD: scsi_tape.h,v 1.9 1996/05/24 02:04:47 thorpej Exp $ */
- /*
- * Copyright (c) 1994 Charles Hannum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Charles Hannum.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /*
- * Originally written by Julian Elischer (julian@tfs.com)
- * for TRW Financial Systems.
- *
- * TRW Financial Systems, in accordance with their agreement with Carnegie
- * Mellon University, makes this software available to CMU to distribute
- * or use in any manner that they see fit as long as this message is kept with
- * the software. For this reason TFS also grants any other persons or
- * organisations permission to use or modify this software.
- *
- * TFS supplies this software to be publicly redistributed
- * on the understanding that TFS is not responsible for the correct
- * functioning of this software in any circumstances.
- *
- * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
- */
- /*
- * SCSI tape interface description
- */
- #ifndef _SCSI_TAPE_H_
- #define _SCSI_TAPE_H_ 1
- /*
- * SCSI command formats
- */
- #define READ 0x08
- #define WRITE 0x0a
- struct scsi_rw_tape {
- u_int8_t opcode;
- u_int8_t byte2;
- #define SRW_FIXED 0x01
- u_int8_t len[3];
- u_int8_t control;
- };
- #define SPACE 0x11
- struct scsi_space {
- u_int8_t opcode;
- u_int8_t byte2;
- #define SS_CODE 0x03
- #define SP_BLKS 0x00
- #define SP_FILEMARKS 0x01
- #define SP_SEQ_FILEMARKS 0x02
- #define SP_EOM 0x03
- u_int8_t number[3];
- u_int8_t control;
- };
- #define WRITE_FILEMARKS 0x10
- struct scsi_write_filemarks {
- u_int8_t opcode;
- u_int8_t byte2;
- u_int8_t number[3];
- u_int8_t control;
- };
- #define REWIND 0x01
- struct scsi_rewind {
- u_int8_t opcode;
- u_int8_t byte2;
- #define SR_IMMED 0x01
- u_int8_t unused[3];
- u_int8_t control;
- };
- #define LOAD 0x1b
- struct scsi_load {
- u_int8_t opcode;
- u_int8_t byte2;
- #define SL_IMMED 0x01
- u_int8_t unused[2];
- u_int8_t how;
- #define LD_UNLOAD 0x00
- #define LD_LOAD 0x01
- #define LD_RETENSION 0x02
- u_int8_t control;
- };
- #define ERASE 0x19
- struct scsi_erase {
- u_int8_t opcode;
- u_int8_t byte2;
- #define SE_LONG 0x01
- #define SE_IMMED 0x02
- u_int8_t unused[3];
- u_int8_t control;
- };
- #define READ_BLOCK_LIMITS 0x05
- struct scsi_block_limits {
- u_int8_t opcode;
- u_int8_t byte2;
- u_int8_t unused[3];
- u_int8_t control;
- };
- struct scsi_block_limits_data {
- u_int8_t reserved;
- u_int8_t max_length[3]; /* Most significant */
- u_int8_t min_length[2]; /* Most significant */
- };
- /* See SCSI-II spec 9.3.3.1 */
- struct scsi_tape_dev_conf_page {
- u_int8_t pagecode; /* 0x10 */
- u_int8_t pagelength; /* 0x0e */
- u_int8_t byte2;
- #define SMT_CAP 0x40 /* change active partition */
- #define SMT_CAF 0x20 /* change active format */
- #define SMT_AFMASK 0x1f /* active format mask */
- u_int8_t active_partition;
- u_int8_t wb_full_ratio;
- u_int8_t rb_empty_ratio;
- u_int8_t wrdelay_time[2];
- u_int8_t byte8;
- #define SMT_DBR 0x80 /* data buffer recovery */
- #define SMT_BIS 0x40 /* block identifiers supported */
- #define SMT_RSMK 0x20 /* report setmarks */
- #define SMT_AVC 0x10 /* automatic velocity control */
- #define SMT_SOCF_MASK 0xc0 /* stop on consecutive formats */
- #define SMT_RBO 0x20 /* recover buffer order */
- #define SMT_REW 0x10 /* report early warning */
- u_int8_t gap_size;
- u_int8_t byte10;
- #define SMT_EODDEFINED 0xe0 /* EOD defined */
- #define SMT_EEG 0x10 /* enable EOD generation */
- #define SMT_SEW 0x80 /* synchronize at early warning */
- u_int8_t ew_bufsize[3];
- u_int8_t sel_comp_alg;
- #define SMT_COMP_NONE 0x00
- #define SMT_COMP_DEFAULT 0x01
- u_int8_t reserved;
- };
- /* defines for the device specific byte in the mode select/sense header */
- #define SMH_DSP_SPEED 0x0F
- #define SMH_DSP_BUFF_MODE 0x70
- #define SMH_DSP_BUFF_MODE_OFF 0x00
- #define SMH_DSP_BUFF_MODE_ON 0x10
- #define SMH_DSP_BUFF_MODE_MLTI 0x20
- /* A special for the CIPHER ST150S(old drive) */
- struct block_desc_cipher {
- u_int8_t density;
- u_int8_t nblocks[3];
- u_int8_t reserved;
- u_int8_t blklen[3];
- u_int8_t other;
- #define ST150_SEC 0x01 /* soft error count */
- #define SR150_AUI 0x02 /* autoload inhibit */
- };
- /**********************************************************************
- from the scsi2 spec
- Value Tracks Density(bpi) Code Type Reference Note
- 0x1 9 800 NRZI R X3.22-1983 2
- 0x2 9 1600 PE R X3.39-1986 2
- 0x3 9 6250 GCR R X3.54-1986 2
- 0x5 4/9 8000 GCR C X3.136-1986 1
- 0x6 9 3200 PE R X3.157-1987 2
- 0x7 4 6400 IMFM C X3.116-1986 1
- 0x8 4 8000 GCR CS X3.158-1986 1
- 0x9 18 37871 GCR C X3B5/87-099 2
- 0xA 22 6667 MFM C X3B5/86-199 1
- 0xB 4 1600 PE C X3.56-1986 1
- 0xC 24 12690 GCR C HI-TC1 1,5
- 0xD 24 25380 GCR C HI-TC2 1,5
- 0xF 15 10000 GCR C QIC-120 1,5
- 0x10 18 10000 GCR C QIC-150 1,5
- 0x11 26 16000 GCR C QIC-320(525?) 1,5
- 0x12 30 51667 RLL C QIC-1350 1,5
- 0x13 1 61000 DDS CS X3B5/88-185A 4
- 0x14 1 43245 RLL CS X3.202-1991 4
- 0x15 1 45434 RLL CS ECMA TC17 4
- 0x16 48 10000 MFM C X3.193-1990 1
- 0x17 48 42500 MFM C X3B5/91-174 1
- 0x45 73 67733 RLL C QIC3095
- where Code means:
- NRZI Non Return to Zero, change on ones
- GCR Group Code Recording
- PE Phase Encoded
- IMFM Inverted Modified Frequency Modulation
- MFM Modified Frequency Modulation
- DDS Dat Data Storage
- RLL Run Length Encoding
- where Type means:
- R Reel-to-Reel
- C Cartridge
- CS cassette
- where Notes means:
- 1 Serial Recorded
- 2 Parallel Recorded
- 3 Old format know as QIC-11
- 4 Helical Scan
- 5 Not ANSI standard, rather industry standard.
- ********************************************************************/
- #define HALFINCH_800 0x01
- #define HALFINCH_1600 0x02
- #define HALFINCH_6250 0x03
- #define QIC_11 0x04 /* from Archive 150S Theory of Op. XXX */
- #define QIC_24 0x05 /* may be bad, works for CIPHER ST150S XXX */
- #define QIC_120 0x0f
- #define QIC_150 0x10
- #define QIC_320 0x11
- #define QIC_525 0x11
- #define QIC_1320 0x12
- #define DDS 0x13
- #define DAT_1 0x13
- #define QIC_3080 0x29
- #define QIC_3095 0x45
- #endif /* _SCSI_TAPE_H_ */
|