diff options
Diffstat (limited to 'drivers/s390/block/dasd_eckd.h')
-rw-r--r-- | drivers/s390/block/dasd_eckd.h | 184 |
1 files changed, 60 insertions, 124 deletions
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h index fc2509c939bc..4bf0aa5112c1 100644 --- a/drivers/s390/block/dasd_eckd.h +++ b/drivers/s390/block/dasd_eckd.h | |||
@@ -231,133 +231,62 @@ struct dasd_eckd_characteristics { | |||
231 | __u8 reserved3[10]; | 231 | __u8 reserved3[10]; |
232 | } __attribute__ ((packed)); | 232 | } __attribute__ ((packed)); |
233 | 233 | ||
234 | struct dasd_eckd_confdata { | 234 | /* elements of the configuration data */ |
235 | struct dasd_ned { | ||
235 | struct { | 236 | struct { |
236 | struct { | 237 | __u8 identifier:2; |
237 | unsigned char identifier:2; | 238 | __u8 token_id:1; |
238 | unsigned char token_id:1; | 239 | __u8 sno_valid:1; |
239 | unsigned char sno_valid:1; | 240 | __u8 subst_sno:1; |
240 | unsigned char subst_sno:1; | 241 | __u8 recNED:1; |
241 | unsigned char recNED:1; | 242 | __u8 emuNED:1; |
242 | unsigned char emuNED:1; | 243 | __u8 reserved:1; |
243 | unsigned char reserved:1; | 244 | } __attribute__ ((packed)) flags; |
244 | } __attribute__ ((packed)) flags; | 245 | __u8 descriptor; |
245 | __u8 descriptor; | 246 | __u8 dev_class; |
246 | __u8 dev_class; | 247 | __u8 reserved; |
247 | __u8 reserved; | 248 | __u8 dev_type[6]; |
248 | unsigned char dev_type[6]; | 249 | __u8 dev_model[3]; |
249 | unsigned char dev_model[3]; | 250 | __u8 HDA_manufacturer[3]; |
250 | unsigned char HDA_manufacturer[3]; | 251 | __u8 HDA_location[2]; |
251 | unsigned char HDA_location[2]; | 252 | __u8 HDA_seqno[12]; |
252 | unsigned char HDA_seqno[12]; | 253 | __u8 ID; |
253 | __u8 ID; | 254 | __u8 unit_addr; |
254 | __u8 unit_addr; | 255 | } __attribute__ ((packed)); |
255 | } __attribute__ ((packed)) ned1; | 256 | |
256 | union { | 257 | struct dasd_sneq { |
257 | struct { | ||
258 | struct { | ||
259 | unsigned char identifier:2; | ||
260 | unsigned char token_id:1; | ||
261 | unsigned char sno_valid:1; | ||
262 | unsigned char subst_sno:1; | ||
263 | unsigned char recNED:1; | ||
264 | unsigned char emuNED:1; | ||
265 | unsigned char reserved:1; | ||
266 | } __attribute__ ((packed)) flags; | ||
267 | __u8 descriptor; | ||
268 | __u8 reserved[2]; | ||
269 | unsigned char dev_type[6]; | ||
270 | unsigned char dev_model[3]; | ||
271 | unsigned char DASD_manufacturer[3]; | ||
272 | unsigned char DASD_location[2]; | ||
273 | unsigned char DASD_seqno[12]; | ||
274 | __u16 ID; | ||
275 | } __attribute__ ((packed)) ned; | ||
276 | struct { | ||
277 | unsigned char flags; /* byte 0 */ | ||
278 | unsigned char res1; /* byte 1 */ | ||
279 | __u16 format; /* byte 2-3 */ | ||
280 | unsigned char res2[4]; /* byte 4-7 */ | ||
281 | unsigned char sua_flags; /* byte 8 */ | ||
282 | __u8 base_unit_addr; /* byte 9 */ | ||
283 | unsigned char res3[22]; /* byte 10-31 */ | ||
284 | } __attribute__ ((packed)) sneq; | ||
285 | } __attribute__ ((packed)) ned2; | ||
286 | struct { | 258 | struct { |
287 | struct { | 259 | __u8 identifier:2; |
288 | unsigned char identifier:2; | 260 | __u8 reserved:6; |
289 | unsigned char token_id:1; | 261 | } __attribute__ ((packed)) flags; |
290 | unsigned char sno_valid:1; | 262 | __u8 res1; |
291 | unsigned char subst_sno:1; | 263 | __u16 format; |
292 | unsigned char recNED:1; | 264 | __u8 res2[4]; /* byte 4- 7 */ |
293 | unsigned char emuNED:1; | 265 | __u8 sua_flags; /* byte 8 */ |
294 | unsigned char reserved:1; | 266 | __u8 base_unit_addr; /* byte 9 */ |
295 | } __attribute__ ((packed)) flags; | 267 | __u8 res3[22]; /* byte 10-31 */ |
296 | __u8 descriptor; | 268 | } __attribute__ ((packed)); |
297 | __u8 reserved[2]; | 269 | |
298 | unsigned char cont_type[6]; | 270 | struct vd_sneq { |
299 | unsigned char cont_model[3]; | ||
300 | unsigned char cont_manufacturer[3]; | ||
301 | unsigned char cont_location[2]; | ||
302 | unsigned char cont_seqno[12]; | ||
303 | __u16 ID; | ||
304 | } __attribute__ ((packed)) ned3; | ||
305 | struct { | 271 | struct { |
306 | struct { | 272 | __u8 identifier:2; |
307 | unsigned char identifier:2; | 273 | __u8 reserved:6; |
308 | unsigned char token_id:1; | 274 | } __attribute__ ((packed)) flags; |
309 | unsigned char sno_valid:1; | 275 | __u8 res1; |
310 | unsigned char subst_sno:1; | 276 | __u16 format; |
311 | unsigned char recNED:1; | 277 | __u8 res2[4]; /* byte 4- 7 */ |
312 | unsigned char emuNED:1; | 278 | __u8 uit[16]; /* byte 8-23 */ |
313 | unsigned char reserved:1; | 279 | __u8 res3[8]; /* byte 24-31 */ |
314 | } __attribute__ ((packed)) flags; | 280 | } __attribute__ ((packed)); |
315 | __u8 descriptor; | 281 | |
316 | __u8 reserved[2]; | 282 | struct dasd_gneq { |
317 | unsigned char cont_type[6]; | ||
318 | unsigned char empty[3]; | ||
319 | unsigned char cont_manufacturer[3]; | ||
320 | unsigned char cont_location[2]; | ||
321 | unsigned char cont_seqno[12]; | ||
322 | __u16 ID; | ||
323 | } __attribute__ ((packed)) ned4; | ||
324 | unsigned char ned5[32]; | ||
325 | unsigned char ned6[32]; | ||
326 | unsigned char ned7[32]; | ||
327 | struct { | 283 | struct { |
328 | struct { | 284 | __u8 identifier:2; |
329 | unsigned char identifier:2; | 285 | __u8 reserved:6; |
330 | unsigned char reserved:6; | 286 | } __attribute__ ((packed)) flags; |
331 | } __attribute__ ((packed)) flags; | 287 | __u8 reserved[7]; |
332 | __u8 selector; | 288 | __u16 subsystemID; |
333 | __u16 interfaceID; | 289 | __u8 reserved2[22]; |
334 | __u32 reserved; | ||
335 | __u16 subsystemID; | ||
336 | struct { | ||
337 | unsigned char sp0:1; | ||
338 | unsigned char sp1:1; | ||
339 | unsigned char reserved:5; | ||
340 | unsigned char scluster:1; | ||
341 | } __attribute__ ((packed)) spathID; | ||
342 | __u8 unit_address; | ||
343 | __u8 dev_ID; | ||
344 | __u8 dev_address; | ||
345 | __u8 adapterID; | ||
346 | __u16 link_address; | ||
347 | struct { | ||
348 | unsigned char parallel:1; | ||
349 | unsigned char escon:1; | ||
350 | unsigned char reserved:1; | ||
351 | unsigned char ficon:1; | ||
352 | unsigned char reserved2:4; | ||
353 | } __attribute__ ((packed)) protocol_type; | ||
354 | struct { | ||
355 | unsigned char PID_in_236:1; | ||
356 | unsigned char reserved:7; | ||
357 | } __attribute__ ((packed)) format_flags; | ||
358 | __u8 log_dev_address; | ||
359 | unsigned char reserved2[12]; | ||
360 | } __attribute__ ((packed)) neq; | ||
361 | } __attribute__ ((packed)); | 290 | } __attribute__ ((packed)); |
362 | 291 | ||
363 | struct dasd_eckd_path { | 292 | struct dasd_eckd_path { |
@@ -463,7 +392,14 @@ struct alias_pav_group { | |||
463 | 392 | ||
464 | struct dasd_eckd_private { | 393 | struct dasd_eckd_private { |
465 | struct dasd_eckd_characteristics rdc_data; | 394 | struct dasd_eckd_characteristics rdc_data; |
466 | struct dasd_eckd_confdata conf_data; | 395 | u8 *conf_data; |
396 | int conf_len; | ||
397 | /* pointers to specific parts in the conf_data */ | ||
398 | struct dasd_ned *ned; | ||
399 | struct dasd_sneq *sneq; | ||
400 | struct vd_sneq *vdsneq; | ||
401 | struct dasd_gneq *gneq; | ||
402 | |||
467 | struct dasd_eckd_path path_data; | 403 | struct dasd_eckd_path path_data; |
468 | struct eckd_count count_area[5]; | 404 | struct eckd_count count_area[5]; |
469 | int init_cqr_status; | 405 | int init_cqr_status; |