123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- /*
- * tape device discipline for 3590 tapes.
- *
- * Copyright IBM Corp. 2001, 2006
- * Author(s): Stefan Bader <shbader@de.ibm.com>
- * Michael Holzheu <holzheu@de.ibm.com>
- * Martin Schwidefsky <schwidefsky@de.ibm.com>
- */
- #ifndef _TAPE_3590_H
- #define _TAPE_3590_H
- #define MEDIUM_SENSE 0xc2
- #define READ_PREVIOUS 0x0a
- #define MODE_SENSE 0xcf
- #define PERFORM_SS_FUNC 0x77
- #define READ_SS_DATA 0x3e
- #define PREP_RD_SS_DATA 0x18
- #define RD_ATTMSG 0x3
- #define SENSE_BRA_PER 0
- #define SENSE_BRA_CONT 1
- #define SENSE_BRA_RE 2
- #define SENSE_BRA_DRE 3
- #define SENSE_FMT_LIBRARY 0x23
- #define SENSE_FMT_UNSOLICITED 0x40
- #define SENSE_FMT_COMMAND_REJ 0x41
- #define SENSE_FMT_COMMAND_EXEC0 0x50
- #define SENSE_FMT_COMMAND_EXEC1 0x51
- #define SENSE_FMT_EVENT0 0x60
- #define SENSE_FMT_EVENT1 0x61
- #define SENSE_FMT_MIM 0x70
- #define SENSE_FMT_SIM 0x71
- #define MSENSE_UNASSOCIATED 0x00
- #define MSENSE_ASSOCIATED_MOUNT 0x01
- #define MSENSE_ASSOCIATED_UMOUNT 0x02
- #define MSENSE_CRYPT_MASK 0x00000010
- #define TAPE_3590_MAX_MSG 0xb0
- /* Datatypes */
- struct tape_3590_disc_data {
- struct tape390_crypt_info crypt_info;
- int read_back_op;
- };
- #define TAPE_3590_CRYPT_INFO(device) \
- ((struct tape_3590_disc_data*)(device->discdata))->crypt_info
- #define TAPE_3590_READ_BACK_OP(device) \
- ((struct tape_3590_disc_data*)(device->discdata))->read_back_op
- struct tape_3590_sense {
- unsigned int command_rej:1;
- unsigned int interv_req:1;
- unsigned int bus_out_check:1;
- unsigned int eq_check:1;
- unsigned int data_check:1;
- unsigned int overrun:1;
- unsigned int def_unit_check:1;
- unsigned int assgnd_elsew:1;
- unsigned int locate_fail:1;
- unsigned int inst_online:1;
- unsigned int reserved:1;
- unsigned int blk_seq_err:1;
- unsigned int begin_part:1;
- unsigned int wr_mode:1;
- unsigned int wr_prot:1;
- unsigned int not_cap:1;
- unsigned int bra:2;
- unsigned int lc:3;
- unsigned int vlf_active:1;
- unsigned int stm:1;
- unsigned int med_pos:1;
- unsigned int rac:8;
- unsigned int rc_rqc:16;
- unsigned int mc:8;
- unsigned int sense_fmt:8;
- union {
- struct {
- unsigned int emc:4;
- unsigned int smc:4;
- unsigned int sev:2;
- unsigned int reserved:6;
- unsigned int md:8;
- unsigned int refcode:8;
- unsigned int mid:16;
- unsigned int mp:16;
- unsigned char volid[6];
- unsigned int fid:8;
- } f70;
- struct {
- unsigned int emc:4;
- unsigned int smc:4;
- unsigned int sev:2;
- unsigned int reserved1:5;
- unsigned int mdf:1;
- unsigned char md[3];
- unsigned int simid:8;
- unsigned int uid:16;
- unsigned int refcode1:16;
- unsigned int refcode2:16;
- unsigned int refcode3:16;
- unsigned int reserved2:8;
- } f71;
- unsigned char data[14];
- } fmt;
- unsigned char pad[10];
- } __attribute__ ((packed));
- struct tape_3590_med_sense {
- unsigned int macst:4;
- unsigned int masst:4;
- char pad1[7];
- unsigned int flags;
- char pad2[116];
- } __attribute__ ((packed));
- struct tape_3590_rdc_data {
- char data[64];
- } __attribute__ ((packed));
- /* Datastructures for 3592 encryption support */
- struct tape3592_kekl {
- __u8 flags;
- char label[64];
- } __attribute__ ((packed));
- struct tape3592_kekl_pair {
- __u8 count;
- struct tape3592_kekl kekl[2];
- } __attribute__ ((packed));
- struct tape3592_kekl_query_data {
- __u16 len;
- __u8 fmt;
- __u8 mc;
- __u32 id;
- __u8 flags;
- struct tape3592_kekl_pair kekls;
- char reserved[116];
- } __attribute__ ((packed));
- struct tape3592_kekl_query_order {
- __u8 code;
- __u8 flags;
- char reserved1[2];
- __u8 max_count;
- char reserved2[35];
- } __attribute__ ((packed));
- struct tape3592_kekl_set_order {
- __u8 code;
- __u8 flags;
- char reserved1[2];
- __u8 op;
- struct tape3592_kekl_pair kekls;
- char reserved2[120];
- } __attribute__ ((packed));
- #endif /* _TAPE_3590_H */
|