diff options
Diffstat (limited to 'sys/scsi/scsi_tape.h')
-rw-r--r-- | sys/scsi/scsi_tape.h | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/sys/scsi/scsi_tape.h b/sys/scsi/scsi_tape.h new file mode 100644 index 0000000..2b8a82f --- /dev/null +++ b/sys/scsi/scsi_tape.h @@ -0,0 +1,169 @@ +/* + * HISTORY + * $Log: scsi_tape.h,v $ + * Revision 1.2 1993/01/26 18:39:08 julian + * add the 'write protected' bit in the device status struct. + * + * Revision 1.1 1992/09/26 22:10:21 julian + * Initial revision + * + * + * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE + * -------------------- ----- ---------------------- + * CURRENT PATCH LEVEL: 1 00098 + * -------------------- ----- ---------------------- + * + * 16 Feb 93 Julian Elischer ADDED for SCSI system + * + */ + +/* + * SCSI tape interface description + */ + +/* + * 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 command format + */ + + +struct scsi_rw_tape +{ + u_char op_code; + u_char fixed:1; + u_char :4; + u_char lun:3; + u_char len[3]; + u_char link:1; + u_char flag:1; + u_char :6; +} rw_tape; + +struct scsi_space +{ + u_char op_code; + u_char code:2; + u_char :3; + u_char lun:3; + u_char number[3]; + u_char link:1; + u_char flag:1; + u_char :6; +} space; +#define SP_BLKS 0 +#define SP_FILEMARKS 1 +#define SP_SEQ_FILEMARKS 2 +#define SP_EOM 3 + +struct scsi_write_filemarks +{ + u_char op_code; + u_char :5; + u_char lun:3; + u_char number[3]; + u_char link:1; + u_char flag:1; + u_char :6; +} write_filemarks; + +struct scsi_rewind +{ + u_char op_code; + u_char immed:1; + u_char :4; + u_char lun:3; + u_char unused[3]; + u_char link:1; + u_char flag:1; + u_char :6; +} rewind; + +struct scsi_load +{ + u_char op_code; + u_char immed:1; + u_char :4; + u_char lun:3; + u_char unused[2]; + u_char load:1; + u_char reten:1; + u_char :6; + u_char link:1; + u_char flag:1; + u_char :6; +} load; +#define LD_UNLOAD 0 +#define LD_LOAD 1 + +struct scsi_blk_limits +{ + u_char op_code; + u_char :5; + u_char lun:3; + u_char unused[3]; + u_char link:1; + u_char flag:1; + u_char :6; +} blk_limits; + +/* + * Opcodes + */ + +#define REWIND 0x01 +#define READ_BLK_LIMITS 0x05 +#define READ_COMMAND_TAPE 0x08 +#define WRITE_COMMAND_TAPE 0x0a +#define WRITE_FILEMARKS 0x10 +#define SPACE 0x11 +#define LOAD_UNLOAD 0x1b /* same as above */ + + + +struct scsi_blk_limits_data +{ + u_char reserved; + u_char max_length_2; /* Most significant */ + u_char max_length_1; + u_char max_length_0; /* Least significant */ + u_char min_length_1; /* Most significant */ + u_char min_length_0; /* Least significant */ +}; + +struct scsi_mode_header_tape +{ + u_char data_length; /* Sense data length */ + u_char medium_type; + u_char speed:4; + u_char buf_mode:3; + u_char write_protected:1; + u_char blk_desc_len; +}; + + +#define QIC_120 0x0f +#define QIC_150 0x10 +#define QIC_320 0x11 +#define QIC_525 0x11 +#define QIC_1320 0x12 + + |