1 /* SPDX-License-Identifier: GPL-2.0 */
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 */