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 * $Revision: 1.9 $ 10 */ 11 12 #define MDSK_WRITE_REQ 0x01 13 #define MDSK_READ_REQ 0x02 14 15 #define INIT_BIO 0x00 16 #define RW_BIO 0x01 17 #define TERM_BIO 0x02 18 19 #define DEV_CLASS_FBA 0x01 20 #define DEV_CLASS_ECKD 0x04 21 22 #define DASD_DIAG_LC_INT_CODE 132 23 #define DASD_DIAG_LC_INT_STATUS 133 24 #define DASD_DIAG_LC_INT_PARM_31BIT 128 25 #define DASD_DIAG_LC_INT_PARM_64BIT 4536 26 #define DASD_DIAG_CODE_31BIT 0x03 27 #define DASD_DIAG_CODE_64BIT 0x07 28 29 #define DASD_DIAG_RWFLAG_ASYNC 0x02 30 #define DASD_DIAG_RWFLAG_NOCACHE 0x01 31 32 #define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80 33 34 struct dasd_diag_characteristics { 35 u16 dev_nr; 36 u16 rdc_len; 37 u8 vdev_class; 38 u8 vdev_type; 39 u8 vdev_status; 40 u8 vdev_flags; 41 u8 rdev_class; 42 u8 rdev_type; 43 u8 rdev_model; 44 u8 rdev_features; 45 } __attribute__ ((packed, aligned(4))); 46 47 48 #ifdef CONFIG_64BIT 49 #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT 50 51 typedef u64 blocknum_t; 52 typedef s64 sblocknum_t; 53 54 struct dasd_diag_bio { 55 u8 type; 56 u8 status; 57 u8 spare1[2]; 58 u32 alet; 59 blocknum_t block_number; 60 void *buffer; 61 } __attribute__ ((packed, aligned(8))); 62 63 struct dasd_diag_init_io { 64 u16 dev_nr; 65 u8 flaga; 66 u8 spare1[21]; 67 u32 block_size; 68 u8 spare2[4]; 69 blocknum_t offset; 70 sblocknum_t start_block; 71 blocknum_t end_block; 72 u8 spare3[8]; 73 } __attribute__ ((packed, aligned(8))); 74 75 struct dasd_diag_rw_io { 76 u16 dev_nr; 77 u8 flaga; 78 u8 spare1[21]; 79 u8 key; 80 u8 flags; 81 u8 spare2[2]; 82 u32 block_count; 83 u32 alet; 84 u8 spare3[4]; 85 u64 interrupt_params; 86 struct dasd_diag_bio *bio_list; 87 u8 spare4[8]; 88 } __attribute__ ((packed, aligned(8))); 89 #else /* CONFIG_64BIT */ 90 #define DASD_DIAG_FLAGA_DEFAULT 0x0 91 92 typedef u32 blocknum_t; 93 typedef s32 sblocknum_t; 94 95 struct dasd_diag_bio { 96 u8 type; 97 u8 status; 98 u16 spare1; 99 blocknum_t block_number; 100 u32 alet; 101 void *buffer; 102 } __attribute__ ((packed, aligned(8))); 103 104 struct dasd_diag_init_io { 105 u16 dev_nr; 106 u8 flaga; 107 u8 spare1[21]; 108 u32 block_size; 109 blocknum_t offset; 110 sblocknum_t start_block; 111 blocknum_t end_block; 112 u8 spare2[24]; 113 } __attribute__ ((packed, aligned(8))); 114 115 struct dasd_diag_rw_io { 116 u16 dev_nr; 117 u8 flaga; 118 u8 spare1[21]; 119 u8 key; 120 u8 flags; 121 u8 spare2[2]; 122 u32 block_count; 123 u32 alet; 124 struct dasd_diag_bio *bio_list; 125 u32 interrupt_params; 126 u8 spare3[20]; 127 } __attribute__ ((packed, aligned(8))); 128 #endif /* CONFIG_64BIT */ 129