1 /* 2 * drivers/s390/char/tape_3590.h 3 * tape device discipline for 3590 tapes. 4 * 5 * Copyright (C) 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> 9 */ 10 11 #ifndef _TAPE_3590_H 12 #define _TAPE_3590_H 13 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 19 20 #define PREP_RD_SS_DATA 0x18 21 #define RD_ATTMSG 0x3 22 23 #define SENSE_BRA_PER 0 24 #define SENSE_BRA_CONT 1 25 #define SENSE_BRA_RE 2 26 #define SENSE_BRA_DRE 3 27 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 37 38 #define MSENSE_UNASSOCIATED 0x00 39 #define MSENSE_ASSOCIATED_MOUNT 0x01 40 #define MSENSE_ASSOCIATED_UMOUNT 0x02 41 42 #define TAPE_3590_MAX_MSG 0xb0 43 44 /* Datatypes */ 45 46 struct tape_3590_disc_data { 47 unsigned char modeset_byte; 48 int read_back_op; 49 }; 50 51 struct tape_3590_sense { 52 53 unsigned int command_rej:1; 54 unsigned int interv_req:1; 55 unsigned int bus_out_check:1; 56 unsigned int eq_check:1; 57 unsigned int data_check:1; 58 unsigned int overrun:1; 59 unsigned int def_unit_check:1; 60 unsigned int assgnd_elsew:1; 61 62 unsigned int locate_fail:1; 63 unsigned int inst_online:1; 64 unsigned int reserved:1; 65 unsigned int blk_seq_err:1; 66 unsigned int begin_part:1; 67 unsigned int wr_mode:1; 68 unsigned int wr_prot:1; 69 unsigned int not_cap:1; 70 71 unsigned int bra:2; 72 unsigned int lc:3; 73 unsigned int vlf_active:1; 74 unsigned int stm:1; 75 unsigned int med_pos:1; 76 77 unsigned int rac:8; 78 79 unsigned int rc_rqc:16; 80 81 unsigned int mc:8; 82 83 unsigned int sense_fmt:8; 84 85 union { 86 struct { 87 unsigned int emc:4; 88 unsigned int smc:4; 89 unsigned int sev:2; 90 unsigned int reserved:6; 91 unsigned int md:8; 92 unsigned int refcode:8; 93 unsigned int mid:16; 94 unsigned int mp:16; 95 unsigned char volid[6]; 96 unsigned int fid:8; 97 } f70; 98 struct { 99 unsigned int emc:4; 100 unsigned int smc:4; 101 unsigned int sev:2; 102 unsigned int reserved1:5; 103 unsigned int mdf:1; 104 unsigned char md[3]; 105 unsigned int simid:8; 106 unsigned int uid:16; 107 unsigned int refcode1:16; 108 unsigned int refcode2:16; 109 unsigned int refcode3:16; 110 unsigned int reserved2:8; 111 } f71; 112 unsigned char data[14]; 113 } fmt; 114 unsigned char pad[10]; 115 116 } __attribute__ ((packed)); 117 118 struct tape_3590_med_sense { 119 unsigned int macst:4; 120 unsigned int masst:4; 121 char pad[127]; 122 } __attribute__ ((packed)); 123 124 #endif /* _TAPE_3590_H */ 125