162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
462306a36Sopenharmony_ci * Based on.......: linux/drivers/s390/block/mdisk.h
562306a36Sopenharmony_ci * ...............: by Hartmunt Penner <hpenner@de.ibm.com>
662306a36Sopenharmony_ci * Bugreports.to..: <Linux390@de.ibm.com>
762306a36Sopenharmony_ci * Copyright IBM Corp. 1999, 2000
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define MDSK_WRITE_REQ 0x01
1262306a36Sopenharmony_ci#define MDSK_READ_REQ  0x02
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define INIT_BIO	0x00
1562306a36Sopenharmony_ci#define RW_BIO		0x01
1662306a36Sopenharmony_ci#define TERM_BIO	0x02
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#define DEV_CLASS_FBA	0x01
1962306a36Sopenharmony_ci#define DEV_CLASS_ECKD	0x04
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#define DASD_DIAG_CODE_31BIT		0x03
2262306a36Sopenharmony_ci#define DASD_DIAG_CODE_64BIT		0x07
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define DASD_DIAG_RWFLAG_ASYNC		0x02
2562306a36Sopenharmony_ci#define DASD_DIAG_RWFLAG_NOCACHE	0x01
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci#define DASD_DIAG_FLAGA_FORMAT_64BIT	0x80
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cistruct dasd_diag_characteristics {
3062306a36Sopenharmony_ci	u16 dev_nr;
3162306a36Sopenharmony_ci	u16 rdc_len;
3262306a36Sopenharmony_ci	u8 vdev_class;
3362306a36Sopenharmony_ci	u8 vdev_type;
3462306a36Sopenharmony_ci	u8 vdev_status;
3562306a36Sopenharmony_ci	u8 vdev_flags;
3662306a36Sopenharmony_ci	u8 rdev_class;
3762306a36Sopenharmony_ci	u8 rdev_type;
3862306a36Sopenharmony_ci	u8 rdev_model;
3962306a36Sopenharmony_ci	u8 rdev_features;
4062306a36Sopenharmony_ci} __attribute__ ((packed, aligned(4)));
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#define DASD_DIAG_FLAGA_DEFAULT		DASD_DIAG_FLAGA_FORMAT_64BIT
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_citypedef u64 blocknum_t;
4562306a36Sopenharmony_citypedef s64 sblocknum_t;
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct dasd_diag_bio {
4862306a36Sopenharmony_ci	u8 type;
4962306a36Sopenharmony_ci	u8 status;
5062306a36Sopenharmony_ci	u8 spare1[2];
5162306a36Sopenharmony_ci	u32 alet;
5262306a36Sopenharmony_ci	blocknum_t block_number;
5362306a36Sopenharmony_ci	void *buffer;
5462306a36Sopenharmony_ci} __attribute__ ((packed, aligned(8)));
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_cistruct dasd_diag_init_io {
5762306a36Sopenharmony_ci	u16 dev_nr;
5862306a36Sopenharmony_ci	u8 flaga;
5962306a36Sopenharmony_ci	u8 spare1[21];
6062306a36Sopenharmony_ci	u32 block_size;
6162306a36Sopenharmony_ci	u8 spare2[4];
6262306a36Sopenharmony_ci	blocknum_t offset;
6362306a36Sopenharmony_ci	sblocknum_t start_block;
6462306a36Sopenharmony_ci	blocknum_t end_block;
6562306a36Sopenharmony_ci	u8  spare3[8];
6662306a36Sopenharmony_ci} __attribute__ ((packed, aligned(8)));
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cistruct dasd_diag_rw_io {
6962306a36Sopenharmony_ci	u16 dev_nr;
7062306a36Sopenharmony_ci	u8  flaga;
7162306a36Sopenharmony_ci	u8  spare1[21];
7262306a36Sopenharmony_ci	u8  key;
7362306a36Sopenharmony_ci	u8  flags;
7462306a36Sopenharmony_ci	u8  spare2[2];
7562306a36Sopenharmony_ci	u32 block_count;
7662306a36Sopenharmony_ci	u32 alet;
7762306a36Sopenharmony_ci	u8  spare3[4];
7862306a36Sopenharmony_ci	u64 interrupt_params;
7962306a36Sopenharmony_ci	struct dasd_diag_bio *bio_list;
8062306a36Sopenharmony_ci	u8  spare4[8];
8162306a36Sopenharmony_ci} __attribute__ ((packed, aligned(8)));
82