]> Pileus Git - ~andy/linux/blob - drivers/s390/block/dasd_diag.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs...
[~andy/linux] / 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_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 */