1 /* 2 * File...........: linux/drivers/s390/block/dasd_diag.h 3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 4 * Based on.......: linux/drivers/s390/block/mdisk.h 5 * ...............: by Hartmunt Penner <hpenner@de.ibm.com> 6 * Bugreports.to..: <Linux390@de.ibm.com> 7 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 8 * 9 */ 10 11 #define MDSK_WRITE_REQ 0x01 12 #define MDSK_READ_REQ 0x02 13 14 #define INIT_BIO 0x00 15 #define RW_BIO 0x01 16 #define TERM_BIO 0x02 17 18 #define DEV_CLASS_FBA 0x01 19 #define DEV_CLASS_ECKD 0x04 20 21 #define DASD_DIAG_CODE_31BIT 0x03 22 #define DASD_DIAG_CODE_64BIT 0x07 23 24 #define DASD_DIAG_RWFLAG_ASYNC 0x02 25 #define DASD_DIAG_RWFLAG_NOCACHE 0x01 26 27 #define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80 28 29 struct dasd_diag_characteristics { 30 u16 dev_nr; 31 u16 rdc_len; 32 u8 vdev_class; 33 u8 vdev_type; 34 u8 vdev_status; 35 u8 vdev_flags; 36 u8 rdev_class; 37 u8 rdev_type; 38 u8 rdev_model; 39 u8 rdev_features; 40 } __attribute__ ((packed, aligned(4))); 41 42 43 #ifdef CONFIG_64BIT 44 #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT 45 46 typedef u64 blocknum_t; 47 typedef s64 sblocknum_t; 48 49 struct dasd_diag_bio { 50 u8 type; 51 u8 status; 52 u8 spare1[2]; 53 u32 alet; 54 blocknum_t block_number; 55 void *buffer; 56 } __attribute__ ((packed, aligned(8))); 57 58 struct dasd_diag_init_io { 59 u16 dev_nr; 60 u8 flaga; 61 u8 spare1[21]; 62 u32 block_size; 63 u8 spare2[4]; 64 blocknum_t offset; 65 sblocknum_t start_block; 66 blocknum_t end_block; 67 u8 spare3[8]; 68 } __attribute__ ((packed, aligned(8))); 69 70 struct dasd_diag_rw_io { 71 u16 dev_nr; 72 u8 flaga; 73 u8 spare1[21]; 74 u8 key; 75 u8 flags; 76 u8 spare2[2]; 77 u32 block_count; 78 u32 alet; 79 u8 spare3[4]; 80 u64 interrupt_params; 81 struct dasd_diag_bio *bio_list; 82 u8 spare4[8]; 83 } __attribute__ ((packed, aligned(8))); 84 #else /* CONFIG_64BIT */ 85 #define DASD_DIAG_FLAGA_DEFAULT 0x0 86 87 typedef u32 blocknum_t; 88 typedef s32 sblocknum_t; 89 90 struct dasd_diag_bio { 91 u8 type; 92 u8 status; 93 u16 spare1; 94 blocknum_t block_number; 95 u32 alet; 96 void *buffer; 97 } __attribute__ ((packed, aligned(8))); 98 99 struct dasd_diag_init_io { 100 u16 dev_nr; 101 u8 flaga; 102 u8 spare1[21]; 103 u32 block_size; 104 blocknum_t offset; 105 sblocknum_t start_block; 106 blocknum_t end_block; 107 u8 spare2[24]; 108 } __attribute__ ((packed, aligned(8))); 109 110 struct dasd_diag_rw_io { 111 u16 dev_nr; 112 u8 flaga; 113 u8 spare1[21]; 114 u8 key; 115 u8 flags; 116 u8 spare2[2]; 117 u32 block_count; 118 u32 alet; 119 struct dasd_diag_bio *bio_list; 120 u32 interrupt_params; 121 u8 spare3[20]; 122 } __attribute__ ((packed, aligned(8))); 123 #endif /* CONFIG_64BIT */ 124