176 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * tape device discipline for 3590 tapes.4 *5 * Copyright IBM Corp. 2001, 20066 * 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_H12#define _TAPE_3590_H13 14#define MEDIUM_SENSE 0xc215#define READ_PREVIOUS 0x0a16#define MODE_SENSE 0xcf17#define PERFORM_SS_FUNC 0x7718#define READ_SS_DATA 0x3e19 20#define PREP_RD_SS_DATA 0x1821#define RD_ATTMSG 0x322 23#define SENSE_BRA_PER 024#define SENSE_BRA_CONT 125#define SENSE_BRA_RE 226#define SENSE_BRA_DRE 327 28#define SENSE_FMT_LIBRARY 0x2329#define SENSE_FMT_UNSOLICITED 0x4030#define SENSE_FMT_COMMAND_REJ 0x4131#define SENSE_FMT_COMMAND_EXEC0 0x5032#define SENSE_FMT_COMMAND_EXEC1 0x5133#define SENSE_FMT_EVENT0 0x6034#define SENSE_FMT_EVENT1 0x6135#define SENSE_FMT_MIM 0x7036#define SENSE_FMT_SIM 0x7137 38#define MSENSE_UNASSOCIATED 0x0039#define MSENSE_ASSOCIATED_MOUNT 0x0140#define MSENSE_ASSOCIATED_UMOUNT 0x0241#define MSENSE_CRYPT_MASK 0x0000001042 43#define TAPE_3590_MAX_MSG 0xb044 45/* Datatypes */46 47struct 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_info54#define TAPE_3590_READ_BACK_OP(device) \55 ((struct tape_3590_disc_data*)(device->discdata))->read_back_op56 57struct 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 124struct 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 132struct tape_3590_rdc_data {133 char data[64];134} __attribute__ ((packed));135 136/* Datastructures for 3592 encryption support */137 138struct tape3592_kekl {139 __u8 flags;140 char label[64];141} __attribute__ ((packed));142 143struct tape3592_kekl_pair {144 __u8 count;145 struct tape3592_kekl kekl[2];146} __attribute__ ((packed));147 148struct 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 158struct 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 166struct 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 */176