18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
48c2ecf20Sopenharmony_ci * Based on.......: linux/drivers/s390/block/mdisk.h
58c2ecf20Sopenharmony_ci * ...............: by Hartmunt Penner <hpenner@de.ibm.com>
68c2ecf20Sopenharmony_ci * Bugreports.to..: <Linux390@de.ibm.com>
78c2ecf20Sopenharmony_ci * Copyright IBM Corp. 1999, 2000
88c2ecf20Sopenharmony_ci *
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#define MDSK_WRITE_REQ 0x01
128c2ecf20Sopenharmony_ci#define MDSK_READ_REQ  0x02
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#define INIT_BIO	0x00
158c2ecf20Sopenharmony_ci#define RW_BIO		0x01
168c2ecf20Sopenharmony_ci#define TERM_BIO	0x02
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci#define DEV_CLASS_FBA	0x01
198c2ecf20Sopenharmony_ci#define DEV_CLASS_ECKD	0x04
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci#define DASD_DIAG_CODE_31BIT		0x03
228c2ecf20Sopenharmony_ci#define DASD_DIAG_CODE_64BIT		0x07
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci#define DASD_DIAG_RWFLAG_ASYNC		0x02
258c2ecf20Sopenharmony_ci#define DASD_DIAG_RWFLAG_NOCACHE	0x01
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci#define DASD_DIAG_FLAGA_FORMAT_64BIT	0x80
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_cistruct dasd_diag_characteristics {
308c2ecf20Sopenharmony_ci	u16 dev_nr;
318c2ecf20Sopenharmony_ci	u16 rdc_len;
328c2ecf20Sopenharmony_ci	u8 vdev_class;
338c2ecf20Sopenharmony_ci	u8 vdev_type;
348c2ecf20Sopenharmony_ci	u8 vdev_status;
358c2ecf20Sopenharmony_ci	u8 vdev_flags;
368c2ecf20Sopenharmony_ci	u8 rdev_class;
378c2ecf20Sopenharmony_ci	u8 rdev_type;
388c2ecf20Sopenharmony_ci	u8 rdev_model;
398c2ecf20Sopenharmony_ci	u8 rdev_features;
408c2ecf20Sopenharmony_ci} __attribute__ ((packed, aligned(4)));
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci#define DASD_DIAG_FLAGA_DEFAULT		DASD_DIAG_FLAGA_FORMAT_64BIT
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_citypedef u64 blocknum_t;
458c2ecf20Sopenharmony_citypedef s64 sblocknum_t;
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_cistruct dasd_diag_bio {
488c2ecf20Sopenharmony_ci	u8 type;
498c2ecf20Sopenharmony_ci	u8 status;
508c2ecf20Sopenharmony_ci	u8 spare1[2];
518c2ecf20Sopenharmony_ci	u32 alet;
528c2ecf20Sopenharmony_ci	blocknum_t block_number;
538c2ecf20Sopenharmony_ci	void *buffer;
548c2ecf20Sopenharmony_ci} __attribute__ ((packed, aligned(8)));
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_cistruct dasd_diag_init_io {
578c2ecf20Sopenharmony_ci	u16 dev_nr;
588c2ecf20Sopenharmony_ci	u8 flaga;
598c2ecf20Sopenharmony_ci	u8 spare1[21];
608c2ecf20Sopenharmony_ci	u32 block_size;
618c2ecf20Sopenharmony_ci	u8 spare2[4];
628c2ecf20Sopenharmony_ci	blocknum_t offset;
638c2ecf20Sopenharmony_ci	sblocknum_t start_block;
648c2ecf20Sopenharmony_ci	blocknum_t end_block;
658c2ecf20Sopenharmony_ci	u8  spare3[8];
668c2ecf20Sopenharmony_ci} __attribute__ ((packed, aligned(8)));
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_cistruct dasd_diag_rw_io {
698c2ecf20Sopenharmony_ci	u16 dev_nr;
708c2ecf20Sopenharmony_ci	u8  flaga;
718c2ecf20Sopenharmony_ci	u8  spare1[21];
728c2ecf20Sopenharmony_ci	u8  key;
738c2ecf20Sopenharmony_ci	u8  flags;
748c2ecf20Sopenharmony_ci	u8  spare2[2];
758c2ecf20Sopenharmony_ci	u32 block_count;
768c2ecf20Sopenharmony_ci	u32 alet;
778c2ecf20Sopenharmony_ci	u8  spare3[4];
788c2ecf20Sopenharmony_ci	u64 interrupt_params;
798c2ecf20Sopenharmony_ci	struct dasd_diag_bio *bio_list;
808c2ecf20Sopenharmony_ci	u8  spare4[8];
818c2ecf20Sopenharmony_ci} __attribute__ ((packed, aligned(8)));
82