1138c014dcba74211dc4e835658f34a787c40cf17Horst Hummel/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * File...........: linux/drivers/s390/block/dasd_fba.h
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Bugreports.to..: <Linux390@de.ibm.com>
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef DASD_FBA_H
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DASD_FBA_H
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct DE_fba_data {
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct {
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char perm:2;	/* Permissions on this extent */
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char zero:2;	/* Must be zero */
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char da:1;	/* usually zero */
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char diag:1;	/* allow diagnose */
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char zero2:2;	/* zero */
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} __attribute__ ((packed)) mask;
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u8 zero;		/* Must be zero */
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u16 blk_size;		/* Blocksize */
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 ext_loc;		/* Extent locator */
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 ext_beg;		/* logical number of block 0 in extent */
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 ext_end;		/* logocal number of last block in extent */
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} __attribute__ ((packed));
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct LO_fba_data {
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct {
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char zero:4;
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned char cmd:4;
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} __attribute__ ((packed)) operation;
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u8 auxiliary;
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u16 blk_ct;
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 blk_nr;
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} __attribute__ ((packed));
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dasd_fba_characteristics {
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		__u8 c;
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct {
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char reserved:1;
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char overrunnable:1;
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char burst_byte:1;
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char data_chain:1;
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char zeros:4;
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		} __attribute__ ((packed)) bits;
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} __attribute__ ((packed)) mode;
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		__u8 c;
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct {
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char zero0:1;
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char removable:1;
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char shared:1;
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char zero1:1;
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char mam:1;
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			unsigned char zeros:3;
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		} __attribute__ ((packed)) bits;
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} __attribute__ ((packed)) features;
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u8 dev_class;
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u8 unit_type;
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u16 blk_size;
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 blk_per_cycl;
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 blk_per_bound;
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 blk_bdsa;
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 reserved0;
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u16 reserved1;
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u16 blk_ce;
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u32 reserved2;
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__u16 reserved3;
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} __attribute__ ((packed));
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif				/* DASD_FBA_H */
73