2 * tape device discipline for 3590 tapes.
4 * Copyright IBM Corp. 2001, 2006
5 * Author(s): Stefan Bader <shbader@de.ibm.com>
6 * Michael Holzheu <holzheu@de.ibm.com>
7 * Martin Schwidefsky <schwidefsky@de.ibm.com>
13 #define MEDIUM_SENSE 0xc2
14 #define READ_PREVIOUS 0x0a
15 #define MODE_SENSE 0xcf
16 #define PERFORM_SS_FUNC 0x77
17 #define READ_SS_DATA 0x3e
19 #define PREP_RD_SS_DATA 0x18
22 #define SENSE_BRA_PER 0
23 #define SENSE_BRA_CONT 1
24 #define SENSE_BRA_RE 2
25 #define SENSE_BRA_DRE 3
27 #define SENSE_FMT_LIBRARY 0x23
28 #define SENSE_FMT_UNSOLICITED 0x40
29 #define SENSE_FMT_COMMAND_REJ 0x41
30 #define SENSE_FMT_COMMAND_EXEC0 0x50
31 #define SENSE_FMT_COMMAND_EXEC1 0x51
32 #define SENSE_FMT_EVENT0 0x60
33 #define SENSE_FMT_EVENT1 0x61
34 #define SENSE_FMT_MIM 0x70
35 #define SENSE_FMT_SIM 0x71
37 #define MSENSE_UNASSOCIATED 0x00
38 #define MSENSE_ASSOCIATED_MOUNT 0x01
39 #define MSENSE_ASSOCIATED_UMOUNT 0x02
40 #define MSENSE_CRYPT_MASK 0x00000010
42 #define TAPE_3590_MAX_MSG 0xb0
46 struct tape_3590_disc_data {
47 struct tape390_crypt_info crypt_info;
51 #define TAPE_3590_CRYPT_INFO(device) \
52 ((struct tape_3590_disc_data*)(device->discdata))->crypt_info
53 #define TAPE_3590_READ_BACK_OP(device) \
54 ((struct tape_3590_disc_data*)(device->discdata))->read_back_op
56 struct tape_3590_sense {
58 unsigned int command_rej:1;
59 unsigned int interv_req:1;
60 unsigned int bus_out_check:1;
61 unsigned int eq_check:1;
62 unsigned int data_check:1;
63 unsigned int overrun:1;
64 unsigned int def_unit_check:1;
65 unsigned int assgnd_elsew:1;
67 unsigned int locate_fail:1;
68 unsigned int inst_online:1;
69 unsigned int reserved:1;
70 unsigned int blk_seq_err:1;
71 unsigned int begin_part:1;
72 unsigned int wr_mode:1;
73 unsigned int wr_prot:1;
74 unsigned int not_cap:1;
78 unsigned int vlf_active:1;
80 unsigned int med_pos:1;
84 unsigned int rc_rqc:16;
88 unsigned int sense_fmt:8;
95 unsigned int reserved:6;
97 unsigned int refcode:8;
100 unsigned char volid[6];
107 unsigned int reserved1:5;
110 unsigned int simid:8;
112 unsigned int refcode1:16;
113 unsigned int refcode2:16;
114 unsigned int refcode3:16;
115 unsigned int reserved2:8;
117 unsigned char data[14];
119 unsigned char pad[10];
121 } __attribute__ ((packed));
123 struct tape_3590_med_sense {
124 unsigned int macst:4;
125 unsigned int masst:4;
129 } __attribute__ ((packed));
131 struct tape_3590_rdc_data {
133 } __attribute__ ((packed));
135 /* Datastructures for 3592 encryption support */
137 struct tape3592_kekl {
140 } __attribute__ ((packed));
142 struct tape3592_kekl_pair {
144 struct tape3592_kekl kekl[2];
145 } __attribute__ ((packed));
147 struct tape3592_kekl_query_data {
153 struct tape3592_kekl_pair kekls;
155 } __attribute__ ((packed));
157 struct tape3592_kekl_query_order {
163 } __attribute__ ((packed));
165 struct tape3592_kekl_set_order {
170 struct tape3592_kekl_pair kekls;
172 } __attribute__ ((packed));
174 #endif /* _TAPE_3590_H */