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