2  *  drivers/s390/char/tape_3590.h
 
   3  *    tape device discipline for 3590 tapes.
 
   5  *    Copyright IBM Corp. 2001,2006
 
   6  *    Author(s): Stefan Bader <shbader@de.ibm.com>
 
   7  *               Michael Holzheu <holzheu@de.ibm.com>
 
   8  *               Martin Schwidefsky <schwidefsky@de.ibm.com>
 
  14 #define MEDIUM_SENSE    0xc2
 
  15 #define READ_PREVIOUS   0x0a
 
  16 #define MODE_SENSE      0xcf
 
  17 #define PERFORM_SS_FUNC 0x77
 
  18 #define READ_SS_DATA    0x3e
 
  20 #define PREP_RD_SS_DATA 0x18
 
  23 #define SENSE_BRA_PER  0
 
  24 #define SENSE_BRA_CONT 1
 
  25 #define SENSE_BRA_RE   2
 
  26 #define SENSE_BRA_DRE  3
 
  28 #define SENSE_FMT_LIBRARY       0x23
 
  29 #define SENSE_FMT_UNSOLICITED   0x40
 
  30 #define SENSE_FMT_COMMAND_REJ   0x41
 
  31 #define SENSE_FMT_COMMAND_EXEC0 0x50
 
  32 #define SENSE_FMT_COMMAND_EXEC1 0x51
 
  33 #define SENSE_FMT_EVENT0        0x60
 
  34 #define SENSE_FMT_EVENT1        0x61
 
  35 #define SENSE_FMT_MIM           0x70
 
  36 #define SENSE_FMT_SIM           0x71
 
  38 #define MSENSE_UNASSOCIATED      0x00
 
  39 #define MSENSE_ASSOCIATED_MOUNT  0x01
 
  40 #define MSENSE_ASSOCIATED_UMOUNT 0x02
 
  41 #define MSENSE_CRYPT_MASK        0x00000010
 
  43 #define TAPE_3590_MAX_MSG        0xb0
 
  47 struct tape_3590_disc_data {
 
  48         struct tape390_crypt_info crypt_info;
 
  52 #define TAPE_3590_CRYPT_INFO(device) \
 
  53         ((struct tape_3590_disc_data*)(device->discdata))->crypt_info
 
  54 #define TAPE_3590_READ_BACK_OP(device) \
 
  55         ((struct tape_3590_disc_data*)(device->discdata))->read_back_op
 
  57 struct tape_3590_sense {
 
  59         unsigned int command_rej:1;
 
  60         unsigned int interv_req:1;
 
  61         unsigned int bus_out_check:1;
 
  62         unsigned int eq_check:1;
 
  63         unsigned int data_check:1;
 
  64         unsigned int overrun:1;
 
  65         unsigned int def_unit_check:1;
 
  66         unsigned int assgnd_elsew:1;
 
  68         unsigned int locate_fail:1;
 
  69         unsigned int inst_online:1;
 
  70         unsigned int reserved:1;
 
  71         unsigned int blk_seq_err:1;
 
  72         unsigned int begin_part:1;
 
  73         unsigned int wr_mode:1;
 
  74         unsigned int wr_prot:1;
 
  75         unsigned int not_cap:1;
 
  79         unsigned int vlf_active:1;
 
  81         unsigned int med_pos:1;
 
  85         unsigned int rc_rqc:16;
 
  89         unsigned int sense_fmt:8;
 
  96                         unsigned int reserved:6;
 
  98                         unsigned int refcode:8;
 
 101                         unsigned char volid[6];
 
 108                         unsigned int reserved1:5;
 
 111                         unsigned int simid:8;
 
 113                         unsigned int refcode1:16;
 
 114                         unsigned int refcode2:16;
 
 115                         unsigned int refcode3:16;
 
 116                         unsigned int reserved2:8;
 
 118                 unsigned char data[14];
 
 120         unsigned char pad[10];
 
 122 } __attribute__ ((packed));
 
 124 struct tape_3590_med_sense {
 
 125         unsigned int macst:4;
 
 126         unsigned int masst:4;
 
 130 } __attribute__ ((packed));
 
 132 struct tape_3590_rdc_data {
 
 134 } __attribute__ ((packed));
 
 136 /* Datastructures for 3592 encryption support */
 
 138 struct tape3592_kekl {
 
 141 } __attribute__ ((packed));
 
 143 struct tape3592_kekl_pair {
 
 145         struct tape3592_kekl kekl[2];
 
 146 } __attribute__ ((packed));
 
 148 struct tape3592_kekl_query_data {
 
 154         struct tape3592_kekl_pair kekls;
 
 156 } __attribute__ ((packed));
 
 158 struct tape3592_kekl_query_order {
 
 164 } __attribute__ ((packed));
 
 166 struct tape3592_kekl_set_order {
 
 171         struct tape3592_kekl_pair kekls;
 
 173 } __attribute__ ((packed));
 
 175 #endif /* _TAPE_3590_H */