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