| 
									
										
										
										
											2006-03-24 03:15:29 -08:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *  drivers/s390/char/tape_3590.h | 
					
						
							|  |  |  |  *    tape device discipline for 3590 tapes. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:26 +01:00
										 |  |  |  *    Copyright IBM Corp. 2001,2006 | 
					
						
							| 
									
										
										
										
											2006-03-24 03:15:29 -08:00
										 |  |  |  *    Author(s): Stefan Bader <shbader@de.ibm.com> | 
					
						
							|  |  |  |  *		 Michael Holzheu <holzheu@de.ibm.com> | 
					
						
							|  |  |  |  *		 Martin Schwidefsky <schwidefsky@de.ibm.com> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _TAPE_3590_H
 | 
					
						
							|  |  |  | #define _TAPE_3590_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define MEDIUM_SENSE	0xc2
 | 
					
						
							|  |  |  | #define READ_PREVIOUS	0x0a
 | 
					
						
							|  |  |  | #define MODE_SENSE	0xcf
 | 
					
						
							|  |  |  | #define PERFORM_SS_FUNC 0x77
 | 
					
						
							|  |  |  | #define READ_SS_DATA	0x3e
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define PREP_RD_SS_DATA 0x18
 | 
					
						
							|  |  |  | #define RD_ATTMSG	0x3
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define SENSE_BRA_PER  0
 | 
					
						
							|  |  |  | #define SENSE_BRA_CONT 1
 | 
					
						
							|  |  |  | #define SENSE_BRA_RE   2
 | 
					
						
							|  |  |  | #define SENSE_BRA_DRE  3
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define SENSE_FMT_LIBRARY	0x23
 | 
					
						
							|  |  |  | #define SENSE_FMT_UNSOLICITED	0x40
 | 
					
						
							|  |  |  | #define SENSE_FMT_COMMAND_REJ	0x41
 | 
					
						
							|  |  |  | #define SENSE_FMT_COMMAND_EXEC0 0x50
 | 
					
						
							|  |  |  | #define SENSE_FMT_COMMAND_EXEC1 0x51
 | 
					
						
							|  |  |  | #define SENSE_FMT_EVENT0	0x60
 | 
					
						
							|  |  |  | #define SENSE_FMT_EVENT1	0x61
 | 
					
						
							|  |  |  | #define SENSE_FMT_MIM		0x70
 | 
					
						
							|  |  |  | #define SENSE_FMT_SIM		0x71
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define MSENSE_UNASSOCIATED	 0x00
 | 
					
						
							|  |  |  | #define MSENSE_ASSOCIATED_MOUNT	 0x01
 | 
					
						
							|  |  |  | #define MSENSE_ASSOCIATED_UMOUNT 0x02
 | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:26 +01:00
										 |  |  | #define MSENSE_CRYPT_MASK	 0x00000010
 | 
					
						
							| 
									
										
										
										
											2006-03-24 03:15:29 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define TAPE_3590_MAX_MSG	 0xb0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Datatypes */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape_3590_disc_data { | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:26 +01:00
										 |  |  | 	struct tape390_crypt_info crypt_info; | 
					
						
							| 
									
										
										
										
											2006-03-24 03:15:29 -08:00
										 |  |  | 	int read_back_op; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:26 +01:00
										 |  |  | #define TAPE_3590_CRYPT_INFO(device) \
 | 
					
						
							|  |  |  | 	((struct tape_3590_disc_data*)(device->discdata))->crypt_info | 
					
						
							|  |  |  | #define TAPE_3590_READ_BACK_OP(device) \
 | 
					
						
							|  |  |  | 	((struct tape_3590_disc_data*)(device->discdata))->read_back_op | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-24 03:15:29 -08:00
										 |  |  | struct tape_3590_sense { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int command_rej:1; | 
					
						
							|  |  |  | 	unsigned int interv_req:1; | 
					
						
							|  |  |  | 	unsigned int bus_out_check:1; | 
					
						
							|  |  |  | 	unsigned int eq_check:1; | 
					
						
							|  |  |  | 	unsigned int data_check:1; | 
					
						
							|  |  |  | 	unsigned int overrun:1; | 
					
						
							|  |  |  | 	unsigned int def_unit_check:1; | 
					
						
							|  |  |  | 	unsigned int assgnd_elsew:1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int locate_fail:1; | 
					
						
							|  |  |  | 	unsigned int inst_online:1; | 
					
						
							|  |  |  | 	unsigned int reserved:1; | 
					
						
							|  |  |  | 	unsigned int blk_seq_err:1; | 
					
						
							|  |  |  | 	unsigned int begin_part:1; | 
					
						
							|  |  |  | 	unsigned int wr_mode:1; | 
					
						
							|  |  |  | 	unsigned int wr_prot:1; | 
					
						
							|  |  |  | 	unsigned int not_cap:1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int bra:2; | 
					
						
							|  |  |  | 	unsigned int lc:3; | 
					
						
							|  |  |  | 	unsigned int vlf_active:1; | 
					
						
							|  |  |  | 	unsigned int stm:1; | 
					
						
							|  |  |  | 	unsigned int med_pos:1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int rac:8; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int rc_rqc:16; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int mc:8; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int sense_fmt:8; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	union { | 
					
						
							|  |  |  | 		struct { | 
					
						
							|  |  |  | 			unsigned int emc:4; | 
					
						
							|  |  |  | 			unsigned int smc:4; | 
					
						
							|  |  |  | 			unsigned int sev:2; | 
					
						
							|  |  |  | 			unsigned int reserved:6; | 
					
						
							|  |  |  | 			unsigned int md:8; | 
					
						
							|  |  |  | 			unsigned int refcode:8; | 
					
						
							|  |  |  | 			unsigned int mid:16; | 
					
						
							|  |  |  | 			unsigned int mp:16; | 
					
						
							|  |  |  | 			unsigned char volid[6]; | 
					
						
							|  |  |  | 			unsigned int fid:8; | 
					
						
							|  |  |  | 		} f70; | 
					
						
							|  |  |  | 		struct { | 
					
						
							|  |  |  | 			unsigned int emc:4; | 
					
						
							|  |  |  | 			unsigned int smc:4; | 
					
						
							|  |  |  | 			unsigned int sev:2; | 
					
						
							|  |  |  | 			unsigned int reserved1:5; | 
					
						
							|  |  |  | 			unsigned int mdf:1; | 
					
						
							|  |  |  | 			unsigned char md[3]; | 
					
						
							|  |  |  | 			unsigned int simid:8; | 
					
						
							|  |  |  | 			unsigned int uid:16; | 
					
						
							|  |  |  | 			unsigned int refcode1:16; | 
					
						
							|  |  |  | 			unsigned int refcode2:16; | 
					
						
							|  |  |  | 			unsigned int refcode3:16; | 
					
						
							|  |  |  | 			unsigned int reserved2:8; | 
					
						
							|  |  |  | 		} f71; | 
					
						
							|  |  |  | 		unsigned char data[14]; | 
					
						
							|  |  |  | 	} fmt; | 
					
						
							|  |  |  | 	unsigned char pad[10]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape_3590_med_sense { | 
					
						
							|  |  |  | 	unsigned int macst:4; | 
					
						
							|  |  |  | 	unsigned int masst:4; | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:26 +01:00
										 |  |  | 	char pad1[7]; | 
					
						
							|  |  |  | 	unsigned int flags; | 
					
						
							|  |  |  | 	char pad2[116]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-04 18:47:53 +02:00
										 |  |  | struct tape_3590_rdc_data { | 
					
						
							|  |  |  | 	char data[64]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-02-05 21:18:26 +01:00
										 |  |  | /* Datastructures for 3592 encryption support */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape3592_kekl { | 
					
						
							|  |  |  | 	__u8 flags; | 
					
						
							|  |  |  | 	char label[64]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape3592_kekl_pair { | 
					
						
							|  |  |  | 	__u8 count; | 
					
						
							|  |  |  | 	struct tape3592_kekl kekl[2]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape3592_kekl_query_data { | 
					
						
							|  |  |  | 	__u16 len; | 
					
						
							|  |  |  | 	__u8  fmt; | 
					
						
							|  |  |  | 	__u8  mc; | 
					
						
							|  |  |  | 	__u32 id; | 
					
						
							|  |  |  | 	__u8  flags; | 
					
						
							|  |  |  | 	struct tape3592_kekl_pair kekls; | 
					
						
							|  |  |  | 	char reserved[116]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape3592_kekl_query_order { | 
					
						
							|  |  |  | 	__u8 code; | 
					
						
							|  |  |  | 	__u8 flags; | 
					
						
							|  |  |  | 	char reserved1[2]; | 
					
						
							|  |  |  | 	__u8 max_count; | 
					
						
							|  |  |  | 	char reserved2[35]; | 
					
						
							|  |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tape3592_kekl_set_order { | 
					
						
							|  |  |  | 	__u8 code; | 
					
						
							|  |  |  | 	__u8 flags; | 
					
						
							|  |  |  | 	char reserved1[2]; | 
					
						
							|  |  |  | 	__u8 op; | 
					
						
							|  |  |  | 	struct tape3592_kekl_pair kekls; | 
					
						
							|  |  |  | 	char reserved2[120]; | 
					
						
							| 
									
										
										
										
											2006-03-24 03:15:29 -08:00
										 |  |  | } __attribute__ ((packed)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* _TAPE_3590_H */
 |