Merge branch 'akpm'
[linux-2.6/next.git] / drivers / s390 / block / dasd_diag.h
blob4f71fbe60c8294df766d783c2ace72c33ef0d50a
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
9 */
11 #define MDSK_WRITE_REQ 0x01
12 #define MDSK_READ_REQ 0x02
14 #define INIT_BIO 0x00
15 #define RW_BIO 0x01
16 #define TERM_BIO 0x02
18 #define DEV_CLASS_FBA 0x01
19 #define DEV_CLASS_ECKD 0x04
21 #define DASD_DIAG_CODE_31BIT 0x03
22 #define DASD_DIAG_CODE_64BIT 0x07
24 #define DASD_DIAG_RWFLAG_ASYNC 0x02
25 #define DASD_DIAG_RWFLAG_NOCACHE 0x01
27 #define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80
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)));
43 #ifdef CONFIG_64BIT
44 #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
46 typedef u64 blocknum_t;
47 typedef s64 sblocknum_t;
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)));
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)));
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
87 typedef u32 blocknum_t;
88 typedef s32 sblocknum_t;
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)));
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)));
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 */