root/drivers/s390/char/tape_3590.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  *    tape device discipline for 3590 tapes.
   4  *
   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>
   9  */
  10 
  11 #ifndef _TAPE_3590_H
  12 #define _TAPE_3590_H
  13 
  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
  19 
  20 #define PREP_RD_SS_DATA 0x18
  21 #define RD_ATTMSG       0x3
  22 
  23 #define SENSE_BRA_PER  0
  24 #define SENSE_BRA_CONT 1
  25 #define SENSE_BRA_RE   2
  26 #define SENSE_BRA_DRE  3
  27 
  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
  37 
  38 #define MSENSE_UNASSOCIATED      0x00
  39 #define MSENSE_ASSOCIATED_MOUNT  0x01
  40 #define MSENSE_ASSOCIATED_UMOUNT 0x02
  41 #define MSENSE_CRYPT_MASK        0x00000010
  42 
  43 #define TAPE_3590_MAX_MSG        0xb0
  44 
  45 /* Datatypes */
  46 
  47 struct tape_3590_disc_data {
  48         struct tape390_crypt_info crypt_info;
  49         int read_back_op;
  50 };
  51 
  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
  56 
  57 struct tape_3590_sense {
  58 
  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;
  67 
  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;
  76 
  77         unsigned int bra:2;
  78         unsigned int lc:3;
  79         unsigned int vlf_active:1;
  80         unsigned int stm:1;
  81         unsigned int med_pos:1;
  82 
  83         unsigned int rac:8;
  84 
  85         unsigned int rc_rqc:16;
  86 
  87         unsigned int mc:8;
  88 
  89         unsigned int sense_fmt:8;
  90 
  91         union {
  92                 struct {
  93                         unsigned int emc:4;
  94                         unsigned int smc:4;
  95                         unsigned int sev:2;
  96                         unsigned int reserved:6;
  97                         unsigned int md:8;
  98                         unsigned int refcode:8;
  99                         unsigned int mid:16;
 100                         unsigned int mp:16;
 101                         unsigned char volid[6];
 102                         unsigned int fid:8;
 103                 } f70;
 104                 struct {
 105                         unsigned int emc:4;
 106                         unsigned int smc:4;
 107                         unsigned int sev:2;
 108                         unsigned int reserved1:5;
 109                         unsigned int mdf:1;
 110                         unsigned char md[3];
 111                         unsigned int simid:8;
 112                         unsigned int uid:16;
 113                         unsigned int refcode1:16;
 114                         unsigned int refcode2:16;
 115                         unsigned int refcode3:16;
 116                         unsigned int reserved2:8;
 117                 } f71;
 118                 unsigned char data[14];
 119         } fmt;
 120         unsigned char pad[10];
 121 
 122 } __attribute__ ((packed));
 123 
 124 struct tape_3590_med_sense {
 125         unsigned int macst:4;
 126         unsigned int masst:4;
 127         char pad1[7];
 128         unsigned int flags;
 129         char pad2[116];
 130 } __attribute__ ((packed));
 131 
 132 struct tape_3590_rdc_data {
 133         char data[64];
 134 } __attribute__ ((packed));
 135 
 136 /* Datastructures for 3592 encryption support */
 137 
 138 struct tape3592_kekl {
 139         __u8 flags;
 140         char label[64];
 141 } __attribute__ ((packed));
 142 
 143 struct tape3592_kekl_pair {
 144         __u8 count;
 145         struct tape3592_kekl kekl[2];
 146 } __attribute__ ((packed));
 147 
 148 struct tape3592_kekl_query_data {
 149         __u16 len;
 150         __u8  fmt;
 151         __u8  mc;
 152         __u32 id;
 153         __u8  flags;
 154         struct tape3592_kekl_pair kekls;
 155         char reserved[116];
 156 } __attribute__ ((packed));
 157 
 158 struct tape3592_kekl_query_order {
 159         __u8 code;
 160         __u8 flags;
 161         char reserved1[2];
 162         __u8 max_count;
 163         char reserved2[35];
 164 } __attribute__ ((packed));
 165 
 166 struct tape3592_kekl_set_order {
 167         __u8 code;
 168         __u8 flags;
 169         char reserved1[2];
 170         __u8 op;
 171         struct tape3592_kekl_pair kekls;
 172         char reserved2[120];
 173 } __attribute__ ((packed));
 174 
 175 #endif /* _TAPE_3590_H */

/* [<][>][^][v][top][bottom][index][help] */