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