Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
tape_3590.h
Go to the documentation of this file.
1 /*
2  * tape device discipline for 3590 tapes.
3  *
4  * Copyright IBM Corp. 2001, 2006
5  * Author(s): Stefan Bader <[email protected]>
6  * Michael Holzheu <[email protected]>
7  * Martin Schwidefsky <[email protected]>
8  */
9 
10 #ifndef _TAPE_3590_H
11 #define _TAPE_3590_H
12 
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
18 
19 #define PREP_RD_SS_DATA 0x18
20 #define RD_ATTMSG 0x3
21 
22 #define SENSE_BRA_PER 0
23 #define SENSE_BRA_CONT 1
24 #define SENSE_BRA_RE 2
25 #define SENSE_BRA_DRE 3
26 
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
36 
37 #define MSENSE_UNASSOCIATED 0x00
38 #define MSENSE_ASSOCIATED_MOUNT 0x01
39 #define MSENSE_ASSOCIATED_UMOUNT 0x02
40 #define MSENSE_CRYPT_MASK 0x00000010
41 
42 #define TAPE_3590_MAX_MSG 0xb0
43 
44 /* Datatypes */
45 
49 };
50 
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
55 
57 
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;
66 
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;
75 
76  unsigned int bra:2;
77  unsigned int lc:3;
78  unsigned int vlf_active:1;
79  unsigned int stm:1;
80  unsigned int med_pos:1;
81 
82  unsigned int rac:8;
83 
84  unsigned int rc_rqc:16;
85 
86  unsigned int mc:8;
87 
88  unsigned int sense_fmt:8;
89 
90  union {
91  struct {
92  unsigned int emc:4;
93  unsigned int smc:4;
94  unsigned int sev:2;
95  unsigned int reserved:6;
96  unsigned int md:8;
97  unsigned int refcode:8;
98  unsigned int mid:16;
99  unsigned int mp:16;
100  unsigned char volid[6];
101  unsigned int fid:8;
102  } f70;
103  struct {
104  unsigned int emc:4;
105  unsigned int smc:4;
106  unsigned int sev:2;
107  unsigned int reserved1:5;
108  unsigned int mdf:1;
109  unsigned char md[3];
110  unsigned int simid:8;
111  unsigned int uid:16;
112  unsigned int refcode1:16;
113  unsigned int refcode2:16;
114  unsigned int refcode3:16;
115  unsigned int reserved2:8;
116  } f71;
117  unsigned char data[14];
118  } fmt;
119  unsigned char pad[10];
120 
121 } __attribute__ ((packed));
122 
124  unsigned int macst:4;
125  unsigned int masst:4;
126  char pad1[7];
127  unsigned int flags;
128  char pad2[116];
129 } __attribute__ ((packed));
132  char data[64];
133 } __attribute__ ((packed));
135 /* Datastructures for 3592 encryption support */
139  char label[64];
140 } __attribute__ ((packed));
144  struct tape3592_kekl kekl[2];
145 } __attribute__ ((packed));
154  char reserved[116];
155 } __attribute__ ((packed));
160  char reserved1[2];
162  char reserved2[35];
163 } __attribute__ ((packed));
168  char reserved1[2];
171  char reserved2[120];
172 } __attribute__ ((packed));
174 #endif /* _TAPE_3590_H */