aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd_eckd.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/block/dasd_eckd.h')
-rw-r--r--drivers/s390/block/dasd_eckd.h40
1 files changed, 35 insertions, 5 deletions
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h
index eecfa776db1..ad45bcac3ce 100644
--- a/drivers/s390/block/dasd_eckd.h
+++ b/drivers/s390/block/dasd_eckd.h
@@ -38,8 +38,11 @@
38#define DASD_ECKD_CCW_RELEASE 0x94 38#define DASD_ECKD_CCW_RELEASE 0x94
39#define DASD_ECKD_CCW_READ_CKD_MT 0x9e 39#define DASD_ECKD_CCW_READ_CKD_MT 0x9e
40#define DASD_ECKD_CCW_WRITE_CKD_MT 0x9d 40#define DASD_ECKD_CCW_WRITE_CKD_MT 0x9d
41#define DASD_ECKD_CCW_WRITE_TRACK_DATA 0xA5
42#define DASD_ECKD_CCW_READ_TRACK_DATA 0xA6
41#define DASD_ECKD_CCW_RESERVE 0xB4 43#define DASD_ECKD_CCW_RESERVE 0xB4
42#define DASD_ECKD_CCW_PFX 0xE7 44#define DASD_ECKD_CCW_PFX 0xE7
45#define DASD_ECKD_CCW_PFX_READ 0xEA
43#define DASD_ECKD_CCW_RSCK 0xF9 46#define DASD_ECKD_CCW_RSCK 0xF9
44 47
45/* 48/*
@@ -123,7 +126,9 @@ struct DE_eckd_data {
123 unsigned long long ep_sys_time; /* Ext Parameter - System Time Stamp */ 126 unsigned long long ep_sys_time; /* Ext Parameter - System Time Stamp */
124 __u8 ep_format; /* Extended Parameter format byte */ 127 __u8 ep_format; /* Extended Parameter format byte */
125 __u8 ep_prio; /* Extended Parameter priority I/O byte */ 128 __u8 ep_prio; /* Extended Parameter priority I/O byte */
126 __u8 ep_reserved[6]; /* Extended Parameter Reserved */ 129 __u8 ep_reserved1; /* Extended Parameter Reserved */
130 __u8 ep_rec_per_track; /* Number of records on a track */
131 __u8 ep_reserved[4]; /* Extended Parameter Reserved */
127} __attribute__ ((packed)); 132} __attribute__ ((packed));
128 133
129struct LO_eckd_data { 134struct LO_eckd_data {
@@ -144,11 +149,37 @@ struct LO_eckd_data {
144 __u16 length; 149 __u16 length;
145} __attribute__ ((packed)); 150} __attribute__ ((packed));
146 151
152struct LRE_eckd_data {
153 struct {
154 unsigned char orientation:2;
155 unsigned char operation:6;
156 } __attribute__ ((packed)) operation;
157 struct {
158 unsigned char length_valid:1;
159 unsigned char length_scope:1;
160 unsigned char imbedded_ccw_valid:1;
161 unsigned char check_bytes:2;
162 unsigned char imbedded_count_valid:1;
163 unsigned char reserved:1;
164 unsigned char read_count_suffix:1;
165 } __attribute__ ((packed)) auxiliary;
166 __u8 imbedded_ccw;
167 __u8 count;
168 struct ch_t seek_addr;
169 struct chr_t search_arg;
170 __u8 sector;
171 __u16 length;
172 __u8 imbedded_count;
173 __u8 extended_operation;
174 __u16 extended_parameter_length;
175 __u8 extended_parameter[0];
176} __attribute__ ((packed));
177
147/* Prefix data for format 0x00 and 0x01 */ 178/* Prefix data for format 0x00 and 0x01 */
148struct PFX_eckd_data { 179struct PFX_eckd_data {
149 unsigned char format; 180 unsigned char format;
150 struct { 181 struct {
151 unsigned char define_extend:1; 182 unsigned char define_extent:1;
152 unsigned char time_stamp:1; 183 unsigned char time_stamp:1;
153 unsigned char verify_base:1; 184 unsigned char verify_base:1;
154 unsigned char hyper_pav:1; 185 unsigned char hyper_pav:1;
@@ -158,9 +189,8 @@ struct PFX_eckd_data {
158 __u8 aux; 189 __u8 aux;
159 __u8 base_lss; 190 __u8 base_lss;
160 __u8 reserved[7]; 191 __u8 reserved[7];
161 struct DE_eckd_data define_extend; 192 struct DE_eckd_data define_extent;
162 struct LO_eckd_data locate_record; 193 struct LRE_eckd_data locate_record;
163 __u8 LO_extended_data[4];
164} __attribute__ ((packed)); 194} __attribute__ ((packed));
165 195
166struct dasd_eckd_characteristics { 196struct dasd_eckd_characteristics {