blob: b8c78267ff3ef01ef0e60a1e211784629f2f094e [file] [log] [blame]
Horst Hummel138c0142006-06-29 14:58:12 +02001/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07002 * 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 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 */
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
Horst Hummelfd49f412005-09-03 15:58:00 -070021#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
Linus Torvalds1da177e2005-04-16 15:20:36 -070033struct 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
Horst Hummelfd49f412005-09-03 15:58:00 -070046
Martin Schwidefsky347a8dc2006-01-06 00:19:28 -080047#ifdef CONFIG_64BIT
Horst Hummelfd49f412005-09-03 15:58:00 -070048#define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
49
50typedef u64 blocknum_t;
51typedef s64 sblocknum_t;
52
53struct dasd_diag_bio {
54 u8 type;
55 u8 status;
56 u8 spare1[2];
57 u32 alet;
58 blocknum_t block_number;
Peter Oberparleiter86b368a2005-11-07 00:59:08 -080059 void *buffer;
Horst Hummelfd49f412005-09-03 15:58:00 -070060} __attribute__ ((packed, aligned(8)));
61
62struct 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
74struct 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;
Peter Oberparleiter86b368a2005-11-07 00:59:08 -080085 struct dasd_diag_bio *bio_list;
Horst Hummelfd49f412005-09-03 15:58:00 -070086 u8 spare4[8];
87} __attribute__ ((packed, aligned(8)));
Martin Schwidefsky347a8dc2006-01-06 00:19:28 -080088#else /* CONFIG_64BIT */
Horst Hummelfd49f412005-09-03 15:58:00 -070089#define DASD_DIAG_FLAGA_DEFAULT 0x0
90
91typedef u32 blocknum_t;
92typedef s32 sblocknum_t;
93
Linus Torvalds1da177e2005-04-16 15:20:36 -070094struct dasd_diag_bio {
95 u8 type;
96 u8 status;
97 u16 spare1;
Horst Hummelfd49f412005-09-03 15:58:00 -070098 blocknum_t block_number;
Linus Torvalds1da177e2005-04-16 15:20:36 -070099 u32 alet;
Peter Oberparleiter86b368a2005-11-07 00:59:08 -0800100 void *buffer;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101} __attribute__ ((packed, aligned(8)));
102
103struct dasd_diag_init_io {
104 u16 dev_nr;
Horst Hummelfd49f412005-09-03 15:58:00 -0700105 u8 flaga;
106 u8 spare1[21];
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107 u32 block_size;
Horst Hummelfd49f412005-09-03 15:58:00 -0700108 blocknum_t offset;
109 sblocknum_t start_block;
110 blocknum_t end_block;
111 u8 spare2[24];
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112} __attribute__ ((packed, aligned(8)));
113
114struct dasd_diag_rw_io {
115 u16 dev_nr;
Horst Hummelfd49f412005-09-03 15:58:00 -0700116 u8 flaga;
117 u8 spare1[21];
Linus Torvalds1da177e2005-04-16 15:20:36 -0700118 u8 key;
119 u8 flags;
Horst Hummelfd49f412005-09-03 15:58:00 -0700120 u8 spare2[2];
Linus Torvalds1da177e2005-04-16 15:20:36 -0700121 u32 block_count;
122 u32 alet;
Peter Oberparleiter86b368a2005-11-07 00:59:08 -0800123 struct dasd_diag_bio *bio_list;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124 u32 interrupt_params;
Horst Hummelfd49f412005-09-03 15:58:00 -0700125 u8 spare3[20];
Linus Torvalds1da177e2005-04-16 15:20:36 -0700126} __attribute__ ((packed, aligned(8)));
Martin Schwidefsky347a8dc2006-01-06 00:19:28 -0800127#endif /* CONFIG_64BIT */