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