xref: /openbmc/linux/drivers/s390/block/dasd_fba.h (revision daa400f5)
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>
5daa400f5SStefan Haberland  * Copyright IBM Corp. 1999, 2000
61da177e4SLinus Torvalds  *
71da177e4SLinus Torvalds  */
81da177e4SLinus Torvalds 
91da177e4SLinus Torvalds #ifndef DASD_FBA_H
101da177e4SLinus Torvalds #define DASD_FBA_H
111da177e4SLinus Torvalds 
12a0610a8aSJan Höppner /*
13a0610a8aSJan Höppner  * Maximum number of blocks to be chained
14a0610a8aSJan Höppner  */
15a0610a8aSJan Höppner #define DASD_FBA_MAX_BLOCKS		96
16a0610a8aSJan Höppner 
171da177e4SLinus Torvalds struct DE_fba_data {
181da177e4SLinus Torvalds 	struct {
191da177e4SLinus Torvalds 		unsigned char perm:2;	/* Permissions on this extent */
201da177e4SLinus Torvalds 		unsigned char zero:2;	/* Must be zero */
211da177e4SLinus Torvalds 		unsigned char da:1;	/* usually zero */
221da177e4SLinus Torvalds 		unsigned char diag:1;	/* allow diagnose */
231da177e4SLinus Torvalds 		unsigned char zero2:2;	/* zero */
241da177e4SLinus Torvalds 	} __attribute__ ((packed)) mask;
251da177e4SLinus Torvalds 	__u8 zero;		/* Must be zero */
261da177e4SLinus Torvalds 	__u16 blk_size;		/* Blocksize */
271da177e4SLinus Torvalds 	__u32 ext_loc;		/* Extent locator */
281da177e4SLinus Torvalds 	__u32 ext_beg;		/* logical number of block 0 in extent */
291da177e4SLinus Torvalds 	__u32 ext_end;		/* logocal number of last block in extent */
301da177e4SLinus Torvalds } __attribute__ ((packed));
311da177e4SLinus Torvalds 
321da177e4SLinus Torvalds struct LO_fba_data {
331da177e4SLinus Torvalds 	struct {
341da177e4SLinus Torvalds 		unsigned char zero:4;
351da177e4SLinus Torvalds 		unsigned char cmd:4;
361da177e4SLinus Torvalds 	} __attribute__ ((packed)) operation;
371da177e4SLinus Torvalds 	__u8 auxiliary;
381da177e4SLinus Torvalds 	__u16 blk_ct;
391da177e4SLinus Torvalds 	__u32 blk_nr;
401da177e4SLinus Torvalds } __attribute__ ((packed));
411da177e4SLinus Torvalds 
421da177e4SLinus Torvalds struct dasd_fba_characteristics {
431da177e4SLinus Torvalds 	union {
441da177e4SLinus Torvalds 		__u8 c;
451da177e4SLinus Torvalds 		struct {
461da177e4SLinus Torvalds 			unsigned char reserved:1;
471da177e4SLinus Torvalds 			unsigned char overrunnable:1;
481da177e4SLinus Torvalds 			unsigned char burst_byte:1;
491da177e4SLinus Torvalds 			unsigned char data_chain:1;
501da177e4SLinus Torvalds 			unsigned char zeros:4;
511da177e4SLinus Torvalds 		} __attribute__ ((packed)) bits;
521da177e4SLinus Torvalds 	} __attribute__ ((packed)) mode;
531da177e4SLinus Torvalds 	union {
541da177e4SLinus Torvalds 		__u8 c;
551da177e4SLinus Torvalds 		struct {
561da177e4SLinus Torvalds 			unsigned char zero0:1;
571da177e4SLinus Torvalds 			unsigned char removable:1;
581da177e4SLinus Torvalds 			unsigned char shared:1;
591da177e4SLinus Torvalds 			unsigned char zero1:1;
601da177e4SLinus Torvalds 			unsigned char mam:1;
611da177e4SLinus Torvalds 			unsigned char zeros:3;
621da177e4SLinus Torvalds 		} __attribute__ ((packed)) bits;
631da177e4SLinus Torvalds 	} __attribute__ ((packed)) features;
641da177e4SLinus Torvalds 	__u8 dev_class;
651da177e4SLinus Torvalds 	__u8 unit_type;
661da177e4SLinus Torvalds 	__u16 blk_size;
671da177e4SLinus Torvalds 	__u32 blk_per_cycl;
681da177e4SLinus Torvalds 	__u32 blk_per_bound;
691da177e4SLinus Torvalds 	__u32 blk_bdsa;
701da177e4SLinus Torvalds 	__u32 reserved0;
711da177e4SLinus Torvalds 	__u16 reserved1;
721da177e4SLinus Torvalds 	__u16 blk_ce;
731da177e4SLinus Torvalds 	__u32 reserved2;
741da177e4SLinus Torvalds 	__u16 reserved3;
751da177e4SLinus Torvalds } __attribute__ ((packed));
761da177e4SLinus Torvalds 
771da177e4SLinus Torvalds #endif				/* DASD_FBA_H */
78