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