X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fs390%2Fblock%2Fdasd_diag.h;fp=drivers%2Fs390%2Fblock%2Fdasd_diag.h;h=38a4e55f89539b90f514ea9f80b77d4f4d139475;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=a0c38e3039798527cc5ffbf13065af9a2c555b67;hpb=cee37fe97739d85991964371c1f3a745c00dd236;p=linux-2.6.git diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h index a0c38e303..38a4e55f8 100644 --- a/drivers/s390/block/dasd_diag.h +++ b/drivers/s390/block/dasd_diag.h @@ -6,7 +6,6 @@ * Bugreports.to..: * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 * - * $Revision: 1.6 $ */ #define MDSK_WRITE_REQ 0x01 @@ -19,6 +18,18 @@ #define DEV_CLASS_FBA 0x01 #define DEV_CLASS_ECKD 0x04 +#define DASD_DIAG_LC_INT_CODE 132 +#define DASD_DIAG_LC_INT_STATUS 133 +#define DASD_DIAG_LC_INT_PARM_31BIT 128 +#define DASD_DIAG_LC_INT_PARM_64BIT 4536 +#define DASD_DIAG_CODE_31BIT 0x03 +#define DASD_DIAG_CODE_64BIT 0x07 + +#define DASD_DIAG_RWFLAG_ASYNC 0x02 +#define DASD_DIAG_RWFLAG_NOCACHE 0x01 + +#define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80 + struct dasd_diag_characteristics { u16 dev_nr; u16 rdc_len; @@ -32,35 +43,85 @@ struct dasd_diag_characteristics { u8 rdev_features; } __attribute__ ((packed, aligned(4))); + +#ifdef CONFIG_64BIT +#define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT + +typedef u64 blocknum_t; +typedef s64 sblocknum_t; + +struct dasd_diag_bio { + u8 type; + u8 status; + u8 spare1[2]; + u32 alet; + blocknum_t block_number; + void *buffer; +} __attribute__ ((packed, aligned(8))); + +struct dasd_diag_init_io { + u16 dev_nr; + u8 flaga; + u8 spare1[21]; + u32 block_size; + u8 spare2[4]; + blocknum_t offset; + sblocknum_t start_block; + blocknum_t end_block; + u8 spare3[8]; +} __attribute__ ((packed, aligned(8))); + +struct dasd_diag_rw_io { + u16 dev_nr; + u8 flaga; + u8 spare1[21]; + u8 key; + u8 flags; + u8 spare2[2]; + u32 block_count; + u32 alet; + u8 spare3[4]; + u64 interrupt_params; + struct dasd_diag_bio *bio_list; + u8 spare4[8]; +} __attribute__ ((packed, aligned(8))); +#else /* CONFIG_64BIT */ +#define DASD_DIAG_FLAGA_DEFAULT 0x0 + +typedef u32 blocknum_t; +typedef s32 sblocknum_t; + struct dasd_diag_bio { u8 type; u8 status; u16 spare1; - u32 block_number; + blocknum_t block_number; u32 alet; - u32 buffer; + void *buffer; } __attribute__ ((packed, aligned(8))); struct dasd_diag_init_io { u16 dev_nr; - u16 spare1[11]; + u8 flaga; + u8 spare1[21]; u32 block_size; - u32 offset; - u32 start_block; - u32 end_block; - u32 spare2[6]; + blocknum_t offset; + sblocknum_t start_block; + blocknum_t end_block; + u8 spare2[24]; } __attribute__ ((packed, aligned(8))); struct dasd_diag_rw_io { u16 dev_nr; - u16 spare1[11]; + u8 flaga; + u8 spare1[21]; u8 key; u8 flags; - u16 spare2; + u8 spare2[2]; u32 block_count; u32 alet; - u32 bio_list; + struct dasd_diag_bio *bio_list; u32 interrupt_params; - u32 spare3[5]; + u8 spare3[20]; } __attribute__ ((packed, aligned(8))); - +#endif /* CONFIG_64BIT */