1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
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  * Copyright IBM Corp. 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 #define DASD_DIAG_FLAGA_DEFAULT		DASD_DIAG_FLAGA_FORMAT_64BIT
43 
44 typedef u64 blocknum_t;
45 typedef s64 sblocknum_t;
46 
47 struct dasd_diag_bio {
48 	u8 type;
49 	u8 status;
50 	u8 spare1[2];
51 	u32 alet;
52 	blocknum_t block_number;
53 	void *buffer;
54 } __attribute__ ((packed, aligned(8)));
55 
56 struct dasd_diag_init_io {
57 	u16 dev_nr;
58 	u8 flaga;
59 	u8 spare1[21];
60 	u32 block_size;
61 	u8 spare2[4];
62 	blocknum_t offset;
63 	sblocknum_t start_block;
64 	blocknum_t end_block;
65 	u8  spare3[8];
66 } __attribute__ ((packed, aligned(8)));
67 
68 struct dasd_diag_rw_io {
69 	u16 dev_nr;
70 	u8  flaga;
71 	u8  spare1[21];
72 	u8  key;
73 	u8  flags;
74 	u8  spare2[2];
75 	u32 block_count;
76 	u32 alet;
77 	u8  spare3[4];
78 	u64 interrupt_params;
79 	struct dasd_diag_bio *bio_list;
80 	u8  spare4[8];
81 } __attribute__ ((packed, aligned(8)));
82