1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds /* 31da177e4SLinus Torvalds * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> 41da177e4SLinus Torvalds * Based on.......: linux/drivers/s390/block/mdisk.h 51da177e4SLinus Torvalds * ...............: by Hartmunt Penner <hpenner@de.ibm.com> 61da177e4SLinus Torvalds * Bugreports.to..: <Linux390@de.ibm.com> 7a53c8fabSHeiko Carstens * Copyright IBM Corp. 1999, 2000 81da177e4SLinus Torvalds * 91da177e4SLinus Torvalds */ 101da177e4SLinus Torvalds 111da177e4SLinus Torvalds #define MDSK_WRITE_REQ 0x01 121da177e4SLinus Torvalds #define MDSK_READ_REQ 0x02 131da177e4SLinus Torvalds 141da177e4SLinus Torvalds #define INIT_BIO 0x00 151da177e4SLinus Torvalds #define RW_BIO 0x01 161da177e4SLinus Torvalds #define TERM_BIO 0x02 171da177e4SLinus Torvalds 181da177e4SLinus Torvalds #define DEV_CLASS_FBA 0x01 191da177e4SLinus Torvalds #define DEV_CLASS_ECKD 0x04 201da177e4SLinus Torvalds 21fd49f41aSHorst Hummel #define DASD_DIAG_CODE_31BIT 0x03 22fd49f41aSHorst Hummel #define DASD_DIAG_CODE_64BIT 0x07 23fd49f41aSHorst Hummel 24fd49f41aSHorst Hummel #define DASD_DIAG_RWFLAG_ASYNC 0x02 25fd49f41aSHorst Hummel #define DASD_DIAG_RWFLAG_NOCACHE 0x01 26fd49f41aSHorst Hummel 27fd49f41aSHorst Hummel #define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80 28fd49f41aSHorst Hummel 291da177e4SLinus Torvalds struct dasd_diag_characteristics { 301da177e4SLinus Torvalds u16 dev_nr; 311da177e4SLinus Torvalds u16 rdc_len; 321da177e4SLinus Torvalds u8 vdev_class; 331da177e4SLinus Torvalds u8 vdev_type; 341da177e4SLinus Torvalds u8 vdev_status; 351da177e4SLinus Torvalds u8 vdev_flags; 361da177e4SLinus Torvalds u8 rdev_class; 371da177e4SLinus Torvalds u8 rdev_type; 381da177e4SLinus Torvalds u8 rdev_model; 391da177e4SLinus Torvalds u8 rdev_features; 401da177e4SLinus Torvalds } __attribute__ ((packed, aligned(4))); 411da177e4SLinus Torvalds 42fd49f41aSHorst Hummel #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT 43fd49f41aSHorst Hummel 44fd49f41aSHorst Hummel typedef u64 blocknum_t; 45fd49f41aSHorst Hummel typedef s64 sblocknum_t; 46fd49f41aSHorst Hummel 47fd49f41aSHorst Hummel struct dasd_diag_bio { 48fd49f41aSHorst Hummel u8 type; 49fd49f41aSHorst Hummel u8 status; 50fd49f41aSHorst Hummel u8 spare1[2]; 51fd49f41aSHorst Hummel u32 alet; 52fd49f41aSHorst Hummel blocknum_t block_number; 5386b368a5SPeter Oberparleiter void *buffer; 54fd49f41aSHorst Hummel } __attribute__ ((packed, aligned(8))); 55fd49f41aSHorst Hummel 56fd49f41aSHorst Hummel struct dasd_diag_init_io { 57fd49f41aSHorst Hummel u16 dev_nr; 58fd49f41aSHorst Hummel u8 flaga; 59fd49f41aSHorst Hummel u8 spare1[21]; 60fd49f41aSHorst Hummel u32 block_size; 61fd49f41aSHorst Hummel u8 spare2[4]; 62fd49f41aSHorst Hummel blocknum_t offset; 63fd49f41aSHorst Hummel sblocknum_t start_block; 64fd49f41aSHorst Hummel blocknum_t end_block; 65fd49f41aSHorst Hummel u8 spare3[8]; 66fd49f41aSHorst Hummel } __attribute__ ((packed, aligned(8))); 67fd49f41aSHorst Hummel 68fd49f41aSHorst Hummel struct dasd_diag_rw_io { 69fd49f41aSHorst Hummel u16 dev_nr; 70fd49f41aSHorst Hummel u8 flaga; 71fd49f41aSHorst Hummel u8 spare1[21]; 72fd49f41aSHorst Hummel u8 key; 73fd49f41aSHorst Hummel u8 flags; 74fd49f41aSHorst Hummel u8 spare2[2]; 75fd49f41aSHorst Hummel u32 block_count; 76fd49f41aSHorst Hummel u32 alet; 77fd49f41aSHorst Hummel u8 spare3[4]; 78fd49f41aSHorst Hummel u64 interrupt_params; 7986b368a5SPeter Oberparleiter struct dasd_diag_bio *bio_list; 80fd49f41aSHorst Hummel u8 spare4[8]; 81fd49f41aSHorst Hummel } __attribute__ ((packed, aligned(8))); 82