18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
48c2ecf20Sopenharmony_ci *		    Horst Hummel <Horst.Hummel@de.ibm.com>
58c2ecf20Sopenharmony_ci * Bugreports.to..: <Linux390@de.ibm.com>
68c2ecf20Sopenharmony_ci * Copyright IBM Corp. 1999, 2000
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#ifndef DASD_ECKD_H
118c2ecf20Sopenharmony_ci#define DASD_ECKD_H
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci/*****************************************************************************
148c2ecf20Sopenharmony_ci * SECTION: CCW Definitions
158c2ecf20Sopenharmony_ci ****************************************************************************/
168c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE		 0x05
178c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ		 0x06
188c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_HOME_ADDRESS 0x09
198c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_HOME_ADDRESS	 0x0a
208c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_KD		 0x0d
218c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_KD		 0x0e
228c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_ERASE		 0x11
238c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_COUNT	 0x12
248c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_SLCK		 0x14
258c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_RECORD_ZERO	 0x15
268c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_RECORD_ZERO	 0x16
278c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_CKD		 0x1d
288c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_CKD		 0x1e
298c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_PSF		 0x27
308c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_SNID		 0x34
318c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RSSD		 0x3e
328c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_LOCATE_RECORD	 0x47
338c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_LOCATE_RECORD_EXT	 0x4b
348c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_SNSS		 0x54
358c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_DEFINE_EXTENT	 0x63
368c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_MT		 0x85
378c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_MT		 0x86
388c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_KD_MT	 0x8d
398c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_KD_MT	 0x8e
408c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_COUNT_MT	 0x92
418c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RELEASE		 0x94
428c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_FULL_TRACK	 0x95
438c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_CKD_MT	 0x9e
448c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_CKD_MT	 0x9d
458c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_WRITE_TRACK_DATA	 0xA5
468c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_TRACK_DATA	 0xA6
478c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RESERVE		 0xB4
488c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_READ_TRACK	 0xDE
498c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_PFX		 0xE7
508c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_PFX_READ		 0xEA
518c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RSCK		 0xF9
528c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_RCD		 0xFA
538c2ecf20Sopenharmony_ci#define DASD_ECKD_CCW_DSO		 0xF7
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci/* Define Subssystem Function / Orders */
568c2ecf20Sopenharmony_ci#define DSO_ORDER_RAS			 0x81
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci/*
598c2ecf20Sopenharmony_ci * Perform Subsystem Function / Orders
608c2ecf20Sopenharmony_ci */
618c2ecf20Sopenharmony_ci#define PSF_ORDER_PRSSD			 0x18
628c2ecf20Sopenharmony_ci#define PSF_ORDER_CUIR_RESPONSE		 0x1A
638c2ecf20Sopenharmony_ci#define PSF_ORDER_SSC			 0x1D
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci/*
668c2ecf20Sopenharmony_ci * Perform Subsystem Function / Sub-Orders
678c2ecf20Sopenharmony_ci */
688c2ecf20Sopenharmony_ci#define PSF_SUBORDER_QHA		 0x1C /* Query Host Access */
698c2ecf20Sopenharmony_ci#define PSF_SUBORDER_VSQ		 0x52 /* Volume Storage Query */
708c2ecf20Sopenharmony_ci#define PSF_SUBORDER_LCQ		 0x53 /* Logical Configuration Query */
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci/*
738c2ecf20Sopenharmony_ci * CUIR response condition codes
748c2ecf20Sopenharmony_ci */
758c2ecf20Sopenharmony_ci#define PSF_CUIR_INVALID		 0x00
768c2ecf20Sopenharmony_ci#define PSF_CUIR_COMPLETED		 0x01
778c2ecf20Sopenharmony_ci#define PSF_CUIR_NOT_SUPPORTED		 0x02
788c2ecf20Sopenharmony_ci#define PSF_CUIR_ERROR_IN_REQ		 0x03
798c2ecf20Sopenharmony_ci#define PSF_CUIR_DENIED			 0x04
808c2ecf20Sopenharmony_ci#define PSF_CUIR_LAST_PATH		 0x05
818c2ecf20Sopenharmony_ci#define PSF_CUIR_DEVICE_ONLINE		 0x06
828c2ecf20Sopenharmony_ci#define PSF_CUIR_VARY_FAILURE		 0x07
838c2ecf20Sopenharmony_ci#define PSF_CUIR_SOFTWARE_FAILURE	 0x08
848c2ecf20Sopenharmony_ci#define PSF_CUIR_NOT_RECOGNIZED		 0x09
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci/*
878c2ecf20Sopenharmony_ci * CUIR codes
888c2ecf20Sopenharmony_ci */
898c2ecf20Sopenharmony_ci#define CUIR_QUIESCE			 0x01
908c2ecf20Sopenharmony_ci#define CUIR_RESUME			 0x02
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci/*
938c2ecf20Sopenharmony_ci * Out-of-space (OOS) Codes
948c2ecf20Sopenharmony_ci */
958c2ecf20Sopenharmony_ci#define REPO_WARN			 0x01
968c2ecf20Sopenharmony_ci#define REPO_EXHAUST			 0x02
978c2ecf20Sopenharmony_ci#define POOL_WARN			 0x03
988c2ecf20Sopenharmony_ci#define POOL_EXHAUST			 0x04
998c2ecf20Sopenharmony_ci#define REPO_RELIEVE			 0x05
1008c2ecf20Sopenharmony_ci#define POOL_RELIEVE			 0x06
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci/*
1038c2ecf20Sopenharmony_ci * attention message definitions
1048c2ecf20Sopenharmony_ci */
1058c2ecf20Sopenharmony_ci#define ATTENTION_LENGTH_CUIR		 0x0e
1068c2ecf20Sopenharmony_ci#define ATTENTION_FORMAT_CUIR		 0x01
1078c2ecf20Sopenharmony_ci#define ATTENTION_LENGTH_OOS		 0x10
1088c2ecf20Sopenharmony_ci#define ATTENTION_FORMAT_OOS		 0x06
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ci#define DASD_ECKD_PG_GROUPED		 0x10
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci/*
1138c2ecf20Sopenharmony_ci * Size that is reportet for large volumes in the old 16-bit no_cyl field
1148c2ecf20Sopenharmony_ci */
1158c2ecf20Sopenharmony_ci#define LV_COMPAT_CYL 0xFFFE
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci#define FCX_MAX_DATA_FACTOR 65536
1198c2ecf20Sopenharmony_ci#define DASD_ECKD_RCD_DATA_SIZE 256
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci#define DASD_ECKD_PATH_THRHLD		 256
1228c2ecf20Sopenharmony_ci#define DASD_ECKD_PATH_INTERVAL		 300
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci/*
1258c2ecf20Sopenharmony_ci * Maximum number of blocks to be chained
1268c2ecf20Sopenharmony_ci */
1278c2ecf20Sopenharmony_ci#define DASD_ECKD_MAX_BLOCKS		 190
1288c2ecf20Sopenharmony_ci#define DASD_ECKD_MAX_BLOCKS_RAW	 256
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci/*****************************************************************************
1318c2ecf20Sopenharmony_ci * SECTION: Type Definitions
1328c2ecf20Sopenharmony_ci ****************************************************************************/
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_cistruct eckd_count {
1358c2ecf20Sopenharmony_ci	__u16 cyl;
1368c2ecf20Sopenharmony_ci	__u16 head;
1378c2ecf20Sopenharmony_ci	__u8 record;
1388c2ecf20Sopenharmony_ci	__u8 kl;
1398c2ecf20Sopenharmony_ci	__u16 dl;
1408c2ecf20Sopenharmony_ci} __attribute__ ((packed));
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_cistruct ch_t {
1438c2ecf20Sopenharmony_ci	__u16 cyl;
1448c2ecf20Sopenharmony_ci	__u16 head;
1458c2ecf20Sopenharmony_ci} __attribute__ ((packed));
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_cistruct chr_t {
1488c2ecf20Sopenharmony_ci	__u16 cyl;
1498c2ecf20Sopenharmony_ci	__u16 head;
1508c2ecf20Sopenharmony_ci	__u8 record;
1518c2ecf20Sopenharmony_ci} __attribute__ ((packed));
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_cistruct DE_eckd_data {
1548c2ecf20Sopenharmony_ci	struct {
1558c2ecf20Sopenharmony_ci		unsigned char perm:2;	/* Permissions on this extent */
1568c2ecf20Sopenharmony_ci		unsigned char reserved:1;
1578c2ecf20Sopenharmony_ci		unsigned char seek:2;	/* Seek control */
1588c2ecf20Sopenharmony_ci		unsigned char auth:2;	/* Access authorization */
1598c2ecf20Sopenharmony_ci		unsigned char pci:1;	/* PCI Fetch mode */
1608c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) mask;
1618c2ecf20Sopenharmony_ci	struct {
1628c2ecf20Sopenharmony_ci		unsigned char mode:2;	/* Architecture mode */
1638c2ecf20Sopenharmony_ci		unsigned char ckd:1;	/* CKD Conversion */
1648c2ecf20Sopenharmony_ci		unsigned char operation:3;	/* Operation mode */
1658c2ecf20Sopenharmony_ci		unsigned char cfw:1;	/* Cache fast write */
1668c2ecf20Sopenharmony_ci		unsigned char dfw:1;	/* DASD fast write */
1678c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) attributes;
1688c2ecf20Sopenharmony_ci	__u16 blk_size;		/* Blocksize */
1698c2ecf20Sopenharmony_ci	__u16 fast_write_id;
1708c2ecf20Sopenharmony_ci	__u8 ga_additional;	/* Global Attributes Additional */
1718c2ecf20Sopenharmony_ci	__u8 ga_extended;	/* Global Attributes Extended	*/
1728c2ecf20Sopenharmony_ci	struct ch_t beg_ext;
1738c2ecf20Sopenharmony_ci	struct ch_t end_ext;
1748c2ecf20Sopenharmony_ci	unsigned long ep_sys_time; /* Ext Parameter - System Time Stamp */
1758c2ecf20Sopenharmony_ci	__u8 ep_format;        /* Extended Parameter format byte       */
1768c2ecf20Sopenharmony_ci	__u8 ep_prio;          /* Extended Parameter priority I/O byte */
1778c2ecf20Sopenharmony_ci	__u8 ep_reserved1;     /* Extended Parameter Reserved	       */
1788c2ecf20Sopenharmony_ci	__u8 ep_rec_per_track; /* Number of records on a track	       */
1798c2ecf20Sopenharmony_ci	__u8 ep_reserved[4];   /* Extended Parameter Reserved	       */
1808c2ecf20Sopenharmony_ci} __attribute__ ((packed));
1818c2ecf20Sopenharmony_ci
1828c2ecf20Sopenharmony_cistruct LO_eckd_data {
1838c2ecf20Sopenharmony_ci	struct {
1848c2ecf20Sopenharmony_ci		unsigned char orientation:2;
1858c2ecf20Sopenharmony_ci		unsigned char operation:6;
1868c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) operation;
1878c2ecf20Sopenharmony_ci	struct {
1888c2ecf20Sopenharmony_ci		unsigned char last_bytes_used:1;
1898c2ecf20Sopenharmony_ci		unsigned char reserved:6;
1908c2ecf20Sopenharmony_ci		unsigned char read_count_suffix:1;
1918c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) auxiliary;
1928c2ecf20Sopenharmony_ci	__u8 unused;
1938c2ecf20Sopenharmony_ci	__u8 count;
1948c2ecf20Sopenharmony_ci	struct ch_t seek_addr;
1958c2ecf20Sopenharmony_ci	struct chr_t search_arg;
1968c2ecf20Sopenharmony_ci	__u8 sector;
1978c2ecf20Sopenharmony_ci	__u16 length;
1988c2ecf20Sopenharmony_ci} __attribute__ ((packed));
1998c2ecf20Sopenharmony_ci
2008c2ecf20Sopenharmony_cistruct LRE_eckd_data {
2018c2ecf20Sopenharmony_ci	struct {
2028c2ecf20Sopenharmony_ci		unsigned char orientation:2;
2038c2ecf20Sopenharmony_ci		unsigned char operation:6;
2048c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) operation;
2058c2ecf20Sopenharmony_ci	struct {
2068c2ecf20Sopenharmony_ci		unsigned char length_valid:1;
2078c2ecf20Sopenharmony_ci		unsigned char length_scope:1;
2088c2ecf20Sopenharmony_ci		unsigned char imbedded_ccw_valid:1;
2098c2ecf20Sopenharmony_ci		unsigned char check_bytes:2;
2108c2ecf20Sopenharmony_ci		unsigned char imbedded_count_valid:1;
2118c2ecf20Sopenharmony_ci		unsigned char reserved:1;
2128c2ecf20Sopenharmony_ci		unsigned char read_count_suffix:1;
2138c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) auxiliary;
2148c2ecf20Sopenharmony_ci	__u8 imbedded_ccw;
2158c2ecf20Sopenharmony_ci	__u8 count;
2168c2ecf20Sopenharmony_ci	struct ch_t seek_addr;
2178c2ecf20Sopenharmony_ci	struct chr_t search_arg;
2188c2ecf20Sopenharmony_ci	__u8 sector;
2198c2ecf20Sopenharmony_ci	__u16 length;
2208c2ecf20Sopenharmony_ci	__u8 imbedded_count;
2218c2ecf20Sopenharmony_ci	__u8 extended_operation;
2228c2ecf20Sopenharmony_ci	__u16 extended_parameter_length;
2238c2ecf20Sopenharmony_ci	__u8 extended_parameter[];
2248c2ecf20Sopenharmony_ci} __attribute__ ((packed));
2258c2ecf20Sopenharmony_ci
2268c2ecf20Sopenharmony_ci/* Prefix data for format 0x00 and 0x01 */
2278c2ecf20Sopenharmony_cistruct PFX_eckd_data {
2288c2ecf20Sopenharmony_ci	unsigned char format;
2298c2ecf20Sopenharmony_ci	struct {
2308c2ecf20Sopenharmony_ci		unsigned char define_extent:1;
2318c2ecf20Sopenharmony_ci		unsigned char time_stamp:1;
2328c2ecf20Sopenharmony_ci		unsigned char verify_base:1;
2338c2ecf20Sopenharmony_ci		unsigned char hyper_pav:1;
2348c2ecf20Sopenharmony_ci		unsigned char reserved:4;
2358c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) validity;
2368c2ecf20Sopenharmony_ci	__u8 base_address;
2378c2ecf20Sopenharmony_ci	__u8 aux;
2388c2ecf20Sopenharmony_ci	__u8 base_lss;
2398c2ecf20Sopenharmony_ci	__u8 reserved[7];
2408c2ecf20Sopenharmony_ci	struct DE_eckd_data define_extent;
2418c2ecf20Sopenharmony_ci	struct LRE_eckd_data locate_record;
2428c2ecf20Sopenharmony_ci} __attribute__ ((packed));
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_cistruct dasd_eckd_characteristics {
2458c2ecf20Sopenharmony_ci	__u16 cu_type;
2468c2ecf20Sopenharmony_ci	struct {
2478c2ecf20Sopenharmony_ci		unsigned char support:2;
2488c2ecf20Sopenharmony_ci		unsigned char async:1;
2498c2ecf20Sopenharmony_ci		unsigned char reserved:1;
2508c2ecf20Sopenharmony_ci		unsigned char cache_info:1;
2518c2ecf20Sopenharmony_ci		unsigned char model:3;
2528c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) cu_model;
2538c2ecf20Sopenharmony_ci	__u16 dev_type;
2548c2ecf20Sopenharmony_ci	__u8 dev_model;
2558c2ecf20Sopenharmony_ci	struct {
2568c2ecf20Sopenharmony_ci		unsigned char mult_burst:1;
2578c2ecf20Sopenharmony_ci		unsigned char RT_in_LR:1;
2588c2ecf20Sopenharmony_ci		unsigned char reserved1:1;
2598c2ecf20Sopenharmony_ci		unsigned char RD_IN_LR:1;
2608c2ecf20Sopenharmony_ci		unsigned char reserved2:4;
2618c2ecf20Sopenharmony_ci		unsigned char reserved3:8;
2628c2ecf20Sopenharmony_ci		unsigned char defect_wr:1;
2638c2ecf20Sopenharmony_ci		unsigned char XRC_supported:1;
2648c2ecf20Sopenharmony_ci		unsigned char reserved4:1;
2658c2ecf20Sopenharmony_ci		unsigned char striping:1;
2668c2ecf20Sopenharmony_ci		unsigned char reserved5:4;
2678c2ecf20Sopenharmony_ci		unsigned char cfw:1;
2688c2ecf20Sopenharmony_ci		unsigned char reserved6:2;
2698c2ecf20Sopenharmony_ci		unsigned char cache:1;
2708c2ecf20Sopenharmony_ci		unsigned char dual_copy:1;
2718c2ecf20Sopenharmony_ci		unsigned char dfw:1;
2728c2ecf20Sopenharmony_ci		unsigned char reset_alleg:1;
2738c2ecf20Sopenharmony_ci		unsigned char sense_down:1;
2748c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) facilities;
2758c2ecf20Sopenharmony_ci	__u8 dev_class;
2768c2ecf20Sopenharmony_ci	__u8 unit_type;
2778c2ecf20Sopenharmony_ci	__u16 no_cyl;
2788c2ecf20Sopenharmony_ci	__u16 trk_per_cyl;
2798c2ecf20Sopenharmony_ci	__u8 sec_per_trk;
2808c2ecf20Sopenharmony_ci	__u8 byte_per_track[3];
2818c2ecf20Sopenharmony_ci	__u16 home_bytes;
2828c2ecf20Sopenharmony_ci	__u8 formula;
2838c2ecf20Sopenharmony_ci	union {
2848c2ecf20Sopenharmony_ci		struct {
2858c2ecf20Sopenharmony_ci			__u8 f1;
2868c2ecf20Sopenharmony_ci			__u16 f2;
2878c2ecf20Sopenharmony_ci			__u16 f3;
2888c2ecf20Sopenharmony_ci		} __attribute__ ((packed)) f_0x01;
2898c2ecf20Sopenharmony_ci		struct {
2908c2ecf20Sopenharmony_ci			__u8 f1;
2918c2ecf20Sopenharmony_ci			__u8 f2;
2928c2ecf20Sopenharmony_ci			__u8 f3;
2938c2ecf20Sopenharmony_ci			__u8 f4;
2948c2ecf20Sopenharmony_ci			__u8 f5;
2958c2ecf20Sopenharmony_ci		} __attribute__ ((packed)) f_0x02;
2968c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) factors;
2978c2ecf20Sopenharmony_ci	__u16 first_alt_trk;
2988c2ecf20Sopenharmony_ci	__u16 no_alt_trk;
2998c2ecf20Sopenharmony_ci	__u16 first_dia_trk;
3008c2ecf20Sopenharmony_ci	__u16 no_dia_trk;
3018c2ecf20Sopenharmony_ci	__u16 first_sup_trk;
3028c2ecf20Sopenharmony_ci	__u16 no_sup_trk;
3038c2ecf20Sopenharmony_ci	__u8 MDR_ID;
3048c2ecf20Sopenharmony_ci	__u8 OBR_ID;
3058c2ecf20Sopenharmony_ci	__u8 director;
3068c2ecf20Sopenharmony_ci	__u8 rd_trk_set;
3078c2ecf20Sopenharmony_ci	__u16 max_rec_zero;
3088c2ecf20Sopenharmony_ci	__u8 reserved1;
3098c2ecf20Sopenharmony_ci	__u8 RWANY_in_LR;
3108c2ecf20Sopenharmony_ci	__u8 factor6;
3118c2ecf20Sopenharmony_ci	__u8 factor7;
3128c2ecf20Sopenharmony_ci	__u8 factor8;
3138c2ecf20Sopenharmony_ci	__u8 reserved2[3];
3148c2ecf20Sopenharmony_ci	__u8 reserved3[6];
3158c2ecf20Sopenharmony_ci	__u32 long_no_cyl;
3168c2ecf20Sopenharmony_ci} __attribute__ ((packed));
3178c2ecf20Sopenharmony_ci
3188c2ecf20Sopenharmony_ci/* elements of the configuration data */
3198c2ecf20Sopenharmony_cistruct dasd_ned {
3208c2ecf20Sopenharmony_ci	struct {
3218c2ecf20Sopenharmony_ci		__u8 identifier:2;
3228c2ecf20Sopenharmony_ci		__u8 token_id:1;
3238c2ecf20Sopenharmony_ci		__u8 sno_valid:1;
3248c2ecf20Sopenharmony_ci		__u8 subst_sno:1;
3258c2ecf20Sopenharmony_ci		__u8 recNED:1;
3268c2ecf20Sopenharmony_ci		__u8 emuNED:1;
3278c2ecf20Sopenharmony_ci		__u8 reserved:1;
3288c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) flags;
3298c2ecf20Sopenharmony_ci	__u8 descriptor;
3308c2ecf20Sopenharmony_ci	__u8 dev_class;
3318c2ecf20Sopenharmony_ci	__u8 reserved;
3328c2ecf20Sopenharmony_ci	__u8 dev_type[6];
3338c2ecf20Sopenharmony_ci	__u8 dev_model[3];
3348c2ecf20Sopenharmony_ci	__u8 HDA_manufacturer[3];
3358c2ecf20Sopenharmony_ci	__u8 HDA_location[2];
3368c2ecf20Sopenharmony_ci	__u8 HDA_seqno[12];
3378c2ecf20Sopenharmony_ci	__u8 ID;
3388c2ecf20Sopenharmony_ci	__u8 unit_addr;
3398c2ecf20Sopenharmony_ci} __attribute__ ((packed));
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_cistruct dasd_sneq {
3428c2ecf20Sopenharmony_ci	struct {
3438c2ecf20Sopenharmony_ci		__u8 identifier:2;
3448c2ecf20Sopenharmony_ci		__u8 reserved:6;
3458c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) flags;
3468c2ecf20Sopenharmony_ci	__u8 res1;
3478c2ecf20Sopenharmony_ci	__u16 format;
3488c2ecf20Sopenharmony_ci	__u8 res2[4];		/* byte  4- 7 */
3498c2ecf20Sopenharmony_ci	__u8 sua_flags;		/* byte  8    */
3508c2ecf20Sopenharmony_ci	__u8 base_unit_addr;	/* byte  9    */
3518c2ecf20Sopenharmony_ci	__u8 res3[22];		/* byte 10-31 */
3528c2ecf20Sopenharmony_ci} __attribute__ ((packed));
3538c2ecf20Sopenharmony_ci
3548c2ecf20Sopenharmony_cistruct vd_sneq {
3558c2ecf20Sopenharmony_ci	struct {
3568c2ecf20Sopenharmony_ci		__u8 identifier:2;
3578c2ecf20Sopenharmony_ci		__u8 reserved:6;
3588c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) flags;
3598c2ecf20Sopenharmony_ci	__u8 res1;
3608c2ecf20Sopenharmony_ci	__u16 format;
3618c2ecf20Sopenharmony_ci	__u8 res2[4];	/* byte  4- 7 */
3628c2ecf20Sopenharmony_ci	__u8 uit[16];	/* byte  8-23 */
3638c2ecf20Sopenharmony_ci	__u8 res3[8];	/* byte 24-31 */
3648c2ecf20Sopenharmony_ci} __attribute__ ((packed));
3658c2ecf20Sopenharmony_ci
3668c2ecf20Sopenharmony_cistruct dasd_gneq {
3678c2ecf20Sopenharmony_ci	struct {
3688c2ecf20Sopenharmony_ci		__u8 identifier:2;
3698c2ecf20Sopenharmony_ci		__u8 reserved:6;
3708c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) flags;
3718c2ecf20Sopenharmony_ci	__u8 record_selector;
3728c2ecf20Sopenharmony_ci	__u8 reserved[4];
3738c2ecf20Sopenharmony_ci	struct {
3748c2ecf20Sopenharmony_ci		__u8 value:2;
3758c2ecf20Sopenharmony_ci		__u8 number:6;
3768c2ecf20Sopenharmony_ci	} __attribute__ ((packed)) timeout;
3778c2ecf20Sopenharmony_ci	__u8 reserved3;
3788c2ecf20Sopenharmony_ci	__u16 subsystemID;
3798c2ecf20Sopenharmony_ci	__u8 reserved2[22];
3808c2ecf20Sopenharmony_ci} __attribute__ ((packed));
3818c2ecf20Sopenharmony_ci
3828c2ecf20Sopenharmony_cistruct dasd_rssd_features {
3838c2ecf20Sopenharmony_ci	char feature[256];
3848c2ecf20Sopenharmony_ci} __attribute__((packed));
3858c2ecf20Sopenharmony_ci
3868c2ecf20Sopenharmony_cistruct dasd_rssd_messages {
3878c2ecf20Sopenharmony_ci	__u16 length;
3888c2ecf20Sopenharmony_ci	__u8 format;
3898c2ecf20Sopenharmony_ci	__u8 code;
3908c2ecf20Sopenharmony_ci	__u32 message_id;
3918c2ecf20Sopenharmony_ci	__u8 flags;
3928c2ecf20Sopenharmony_ci	char messages[4087];
3938c2ecf20Sopenharmony_ci} __packed;
3948c2ecf20Sopenharmony_ci
3958c2ecf20Sopenharmony_ci/*
3968c2ecf20Sopenharmony_ci * Read Subsystem Data - Volume Storage Query
3978c2ecf20Sopenharmony_ci */
3988c2ecf20Sopenharmony_cistruct dasd_rssd_vsq {
3998c2ecf20Sopenharmony_ci	struct {
4008c2ecf20Sopenharmony_ci		__u8 tse:1;
4018c2ecf20Sopenharmony_ci		__u8 space_not_available:1;
4028c2ecf20Sopenharmony_ci		__u8 ese:1;
4038c2ecf20Sopenharmony_ci		__u8 unused:5;
4048c2ecf20Sopenharmony_ci	} __packed vol_info;
4058c2ecf20Sopenharmony_ci	__u8 unused1;
4068c2ecf20Sopenharmony_ci	__u16 extent_pool_id;
4078c2ecf20Sopenharmony_ci	__u8 warn_cap_limit;
4088c2ecf20Sopenharmony_ci	__u8 warn_cap_guaranteed;
4098c2ecf20Sopenharmony_ci	__u16 unused2;
4108c2ecf20Sopenharmony_ci	__u32 limit_capacity;
4118c2ecf20Sopenharmony_ci	__u32 guaranteed_capacity;
4128c2ecf20Sopenharmony_ci	__u32 space_allocated;
4138c2ecf20Sopenharmony_ci	__u32 space_configured;
4148c2ecf20Sopenharmony_ci	__u32 logical_capacity;
4158c2ecf20Sopenharmony_ci} __packed;
4168c2ecf20Sopenharmony_ci
4178c2ecf20Sopenharmony_ci/*
4188c2ecf20Sopenharmony_ci * Extent Pool Summary
4198c2ecf20Sopenharmony_ci */
4208c2ecf20Sopenharmony_cistruct dasd_ext_pool_sum {
4218c2ecf20Sopenharmony_ci	__u16 pool_id;
4228c2ecf20Sopenharmony_ci	__u8 repo_warn_thrshld;
4238c2ecf20Sopenharmony_ci	__u8 warn_thrshld;
4248c2ecf20Sopenharmony_ci	struct {
4258c2ecf20Sopenharmony_ci		__u8 type:1;			/* 0 - CKD / 1 - FB */
4268c2ecf20Sopenharmony_ci		__u8 track_space_efficient:1;
4278c2ecf20Sopenharmony_ci		__u8 extent_space_efficient:1;
4288c2ecf20Sopenharmony_ci		__u8 standard_volume:1;
4298c2ecf20Sopenharmony_ci		__u8 extent_size_valid:1;
4308c2ecf20Sopenharmony_ci		__u8 capacity_at_warnlevel:1;
4318c2ecf20Sopenharmony_ci		__u8 pool_oos:1;
4328c2ecf20Sopenharmony_ci		__u8 unused0:1;
4338c2ecf20Sopenharmony_ci		__u8 unused1;
4348c2ecf20Sopenharmony_ci	} __packed flags;
4358c2ecf20Sopenharmony_ci	struct {
4368c2ecf20Sopenharmony_ci		__u8 reserved0:1;
4378c2ecf20Sopenharmony_ci		__u8 size_1G:1;
4388c2ecf20Sopenharmony_ci		__u8 reserved1:5;
4398c2ecf20Sopenharmony_ci		__u8 size_16M:1;
4408c2ecf20Sopenharmony_ci	} __packed extent_size;
4418c2ecf20Sopenharmony_ci	__u8 unused;
4428c2ecf20Sopenharmony_ci} __packed;
4438c2ecf20Sopenharmony_ci
4448c2ecf20Sopenharmony_ci/*
4458c2ecf20Sopenharmony_ci * Read Subsystem Data-Response - Logical Configuration Query - Header
4468c2ecf20Sopenharmony_ci */
4478c2ecf20Sopenharmony_cistruct dasd_rssd_lcq {
4488c2ecf20Sopenharmony_ci	__u16 data_length;		/* Length of data returned */
4498c2ecf20Sopenharmony_ci	__u16 pool_count;		/* Count of extent pools returned - Max: 448 */
4508c2ecf20Sopenharmony_ci	struct {
4518c2ecf20Sopenharmony_ci		__u8 pool_info_valid:1;	/* Detailed Information valid */
4528c2ecf20Sopenharmony_ci		__u8 pool_id_volume:1;
4538c2ecf20Sopenharmony_ci		__u8 pool_id_cec:1;
4548c2ecf20Sopenharmony_ci		__u8 unused0:5;
4558c2ecf20Sopenharmony_ci		__u8 unused1;
4568c2ecf20Sopenharmony_ci	} __packed header_flags;
4578c2ecf20Sopenharmony_ci	char sfi_type[6];		/* Storage Facility Image Type (EBCDIC) */
4588c2ecf20Sopenharmony_ci	char sfi_model[3];		/* Storage Facility Image Model (EBCDIC) */
4598c2ecf20Sopenharmony_ci	__u8 sfi_seq_num[10];		/* Storage Facility Image Sequence Number */
4608c2ecf20Sopenharmony_ci	__u8 reserved[7];
4618c2ecf20Sopenharmony_ci	struct dasd_ext_pool_sum ext_pool_sum[448];
4628c2ecf20Sopenharmony_ci} __packed;
4638c2ecf20Sopenharmony_ci
4648c2ecf20Sopenharmony_cistruct dasd_oos_message {
4658c2ecf20Sopenharmony_ci	__u16 length;
4668c2ecf20Sopenharmony_ci	__u8 format;
4678c2ecf20Sopenharmony_ci	__u8 code;
4688c2ecf20Sopenharmony_ci	__u8 percentage_empty;
4698c2ecf20Sopenharmony_ci	__u8 reserved;
4708c2ecf20Sopenharmony_ci	__u16 ext_pool_id;
4718c2ecf20Sopenharmony_ci	__u16 token;
4728c2ecf20Sopenharmony_ci	__u8 unused[6];
4738c2ecf20Sopenharmony_ci} __packed;
4748c2ecf20Sopenharmony_ci
4758c2ecf20Sopenharmony_cistruct dasd_cuir_message {
4768c2ecf20Sopenharmony_ci	__u16 length;
4778c2ecf20Sopenharmony_ci	__u8 format;
4788c2ecf20Sopenharmony_ci	__u8 code;
4798c2ecf20Sopenharmony_ci	__u32 message_id;
4808c2ecf20Sopenharmony_ci	__u8 flags;
4818c2ecf20Sopenharmony_ci	__u8 neq_map[3];
4828c2ecf20Sopenharmony_ci	__u8 ned_map;
4838c2ecf20Sopenharmony_ci	__u8 record_selector;
4848c2ecf20Sopenharmony_ci} __packed;
4858c2ecf20Sopenharmony_ci
4868c2ecf20Sopenharmony_cistruct dasd_psf_cuir_response {
4878c2ecf20Sopenharmony_ci	__u8 order;
4888c2ecf20Sopenharmony_ci	__u8 flags;
4898c2ecf20Sopenharmony_ci	__u8 cc;
4908c2ecf20Sopenharmony_ci	__u8 chpid;
4918c2ecf20Sopenharmony_ci	__u16 device_nr;
4928c2ecf20Sopenharmony_ci	__u16 reserved;
4938c2ecf20Sopenharmony_ci	__u32 message_id;
4948c2ecf20Sopenharmony_ci	__u64 system_id;
4958c2ecf20Sopenharmony_ci	__u8 cssid;
4968c2ecf20Sopenharmony_ci	__u8 ssid;
4978c2ecf20Sopenharmony_ci} __packed;
4988c2ecf20Sopenharmony_ci
4998c2ecf20Sopenharmony_cistruct dasd_ckd_path_group_entry {
5008c2ecf20Sopenharmony_ci	__u8 status_flags;
5018c2ecf20Sopenharmony_ci	__u8 pgid[11];
5028c2ecf20Sopenharmony_ci	__u8 sysplex_name[8];
5038c2ecf20Sopenharmony_ci	__u32 timestamp;
5048c2ecf20Sopenharmony_ci	__u32 cylinder;
5058c2ecf20Sopenharmony_ci	__u8 reserved[4];
5068c2ecf20Sopenharmony_ci} __packed;
5078c2ecf20Sopenharmony_ci
5088c2ecf20Sopenharmony_cistruct dasd_ckd_host_information {
5098c2ecf20Sopenharmony_ci	__u8 access_flags;
5108c2ecf20Sopenharmony_ci	__u8 entry_size;
5118c2ecf20Sopenharmony_ci	__u16 entry_count;
5128c2ecf20Sopenharmony_ci	__u8 entry[16390];
5138c2ecf20Sopenharmony_ci} __packed;
5148c2ecf20Sopenharmony_ci
5158c2ecf20Sopenharmony_cistruct dasd_psf_query_host_access {
5168c2ecf20Sopenharmony_ci	__u8 access_flag;
5178c2ecf20Sopenharmony_ci	__u8 version;
5188c2ecf20Sopenharmony_ci	__u16 CKD_length;
5198c2ecf20Sopenharmony_ci	__u16 SCSI_length;
5208c2ecf20Sopenharmony_ci	__u8 unused[10];
5218c2ecf20Sopenharmony_ci	__u8 host_access_information[16394];
5228c2ecf20Sopenharmony_ci} __packed;
5238c2ecf20Sopenharmony_ci
5248c2ecf20Sopenharmony_ci/*
5258c2ecf20Sopenharmony_ci * Perform Subsystem Function - Prepare for Read Subsystem Data
5268c2ecf20Sopenharmony_ci */
5278c2ecf20Sopenharmony_cistruct dasd_psf_prssd_data {
5288c2ecf20Sopenharmony_ci	unsigned char order;
5298c2ecf20Sopenharmony_ci	unsigned char flags;
5308c2ecf20Sopenharmony_ci	unsigned char reserved1;
5318c2ecf20Sopenharmony_ci	unsigned char reserved2;
5328c2ecf20Sopenharmony_ci	unsigned char lss;
5338c2ecf20Sopenharmony_ci	unsigned char volume;
5348c2ecf20Sopenharmony_ci	unsigned char suborder;
5358c2ecf20Sopenharmony_ci	unsigned char varies[5];
5368c2ecf20Sopenharmony_ci} __attribute__ ((packed));
5378c2ecf20Sopenharmony_ci
5388c2ecf20Sopenharmony_ci/*
5398c2ecf20Sopenharmony_ci * Perform Subsystem Function - Set Subsystem Characteristics
5408c2ecf20Sopenharmony_ci */
5418c2ecf20Sopenharmony_cistruct dasd_psf_ssc_data {
5428c2ecf20Sopenharmony_ci	unsigned char order;
5438c2ecf20Sopenharmony_ci	unsigned char flags;
5448c2ecf20Sopenharmony_ci	unsigned char cu_type[4];
5458c2ecf20Sopenharmony_ci	unsigned char suborder;
5468c2ecf20Sopenharmony_ci	unsigned char reserved[59];
5478c2ecf20Sopenharmony_ci} __attribute__((packed));
5488c2ecf20Sopenharmony_ci
5498c2ecf20Sopenharmony_ci/* Maximum number of extents for a single Release Allocated Space command */
5508c2ecf20Sopenharmony_ci#define DASD_ECKD_RAS_EXTS_MAX		110U
5518c2ecf20Sopenharmony_ci
5528c2ecf20Sopenharmony_cistruct dasd_dso_ras_ext_range {
5538c2ecf20Sopenharmony_ci	struct ch_t beg_ext;
5548c2ecf20Sopenharmony_ci	struct ch_t end_ext;
5558c2ecf20Sopenharmony_ci} __packed;
5568c2ecf20Sopenharmony_ci
5578c2ecf20Sopenharmony_ci/*
5588c2ecf20Sopenharmony_ci * Define Subsytem Operation - Release Allocated Space
5598c2ecf20Sopenharmony_ci */
5608c2ecf20Sopenharmony_cistruct dasd_dso_ras_data {
5618c2ecf20Sopenharmony_ci	__u8 order;
5628c2ecf20Sopenharmony_ci	struct {
5638c2ecf20Sopenharmony_ci		__u8 message:1;		/* Must be zero */
5648c2ecf20Sopenharmony_ci		__u8 reserved1:2;
5658c2ecf20Sopenharmony_ci		__u8 vol_type:1;	/* 0 - CKD/FBA, 1 - FB */
5668c2ecf20Sopenharmony_ci		__u8 reserved2:4;
5678c2ecf20Sopenharmony_ci	} __packed flags;
5688c2ecf20Sopenharmony_ci	/* Operation Flags to specify scope */
5698c2ecf20Sopenharmony_ci	struct {
5708c2ecf20Sopenharmony_ci		__u8 reserved1:2;
5718c2ecf20Sopenharmony_ci		/* Release Space by Extent */
5728c2ecf20Sopenharmony_ci		__u8 by_extent:1;	/* 0 - entire volume, 1 - specified extents */
5738c2ecf20Sopenharmony_ci		__u8 guarantee_init:1;
5748c2ecf20Sopenharmony_ci		__u8 force_release:1;	/* Internal - will be ignored */
5758c2ecf20Sopenharmony_ci		__u16 reserved2:11;
5768c2ecf20Sopenharmony_ci	} __packed op_flags;
5778c2ecf20Sopenharmony_ci	__u8 lss;
5788c2ecf20Sopenharmony_ci	__u8 dev_addr;
5798c2ecf20Sopenharmony_ci	__u32 reserved1;
5808c2ecf20Sopenharmony_ci	__u8 reserved2[10];
5818c2ecf20Sopenharmony_ci	__u16 nr_exts;			/* Defines number of ext_scope - max 110 */
5828c2ecf20Sopenharmony_ci	__u16 reserved3;
5838c2ecf20Sopenharmony_ci} __packed;
5848c2ecf20Sopenharmony_ci
5858c2ecf20Sopenharmony_ci
5868c2ecf20Sopenharmony_ci/*
5878c2ecf20Sopenharmony_ci * some structures and definitions for alias handling
5888c2ecf20Sopenharmony_ci */
5898c2ecf20Sopenharmony_cistruct dasd_unit_address_configuration {
5908c2ecf20Sopenharmony_ci	struct {
5918c2ecf20Sopenharmony_ci		char ua_type;
5928c2ecf20Sopenharmony_ci		char base_ua;
5938c2ecf20Sopenharmony_ci	} unit[256];
5948c2ecf20Sopenharmony_ci} __attribute__((packed));
5958c2ecf20Sopenharmony_ci
5968c2ecf20Sopenharmony_ci
5978c2ecf20Sopenharmony_ci#define MAX_DEVICES_PER_LCU 256
5988c2ecf20Sopenharmony_ci
5998c2ecf20Sopenharmony_ci/* flags on the LCU  */
6008c2ecf20Sopenharmony_ci#define NEED_UAC_UPDATE  0x01
6018c2ecf20Sopenharmony_ci#define UPDATE_PENDING	0x02
6028c2ecf20Sopenharmony_ci
6038c2ecf20Sopenharmony_cienum pavtype {NO_PAV, BASE_PAV, HYPER_PAV};
6048c2ecf20Sopenharmony_ci
6058c2ecf20Sopenharmony_ci
6068c2ecf20Sopenharmony_cistruct alias_root {
6078c2ecf20Sopenharmony_ci	struct list_head serverlist;
6088c2ecf20Sopenharmony_ci	spinlock_t lock;
6098c2ecf20Sopenharmony_ci};
6108c2ecf20Sopenharmony_ci
6118c2ecf20Sopenharmony_cistruct alias_server {
6128c2ecf20Sopenharmony_ci	struct list_head server;
6138c2ecf20Sopenharmony_ci	struct dasd_uid uid;
6148c2ecf20Sopenharmony_ci	struct list_head lculist;
6158c2ecf20Sopenharmony_ci};
6168c2ecf20Sopenharmony_ci
6178c2ecf20Sopenharmony_cistruct summary_unit_check_work_data {
6188c2ecf20Sopenharmony_ci	char reason;
6198c2ecf20Sopenharmony_ci	struct dasd_device *device;
6208c2ecf20Sopenharmony_ci	struct work_struct worker;
6218c2ecf20Sopenharmony_ci};
6228c2ecf20Sopenharmony_ci
6238c2ecf20Sopenharmony_cistruct read_uac_work_data {
6248c2ecf20Sopenharmony_ci	struct dasd_device *device;
6258c2ecf20Sopenharmony_ci	struct delayed_work dwork;
6268c2ecf20Sopenharmony_ci};
6278c2ecf20Sopenharmony_ci
6288c2ecf20Sopenharmony_cistruct alias_lcu {
6298c2ecf20Sopenharmony_ci	struct list_head lcu;
6308c2ecf20Sopenharmony_ci	struct dasd_uid uid;
6318c2ecf20Sopenharmony_ci	enum pavtype pav;
6328c2ecf20Sopenharmony_ci	char flags;
6338c2ecf20Sopenharmony_ci	spinlock_t lock;
6348c2ecf20Sopenharmony_ci	struct list_head grouplist;
6358c2ecf20Sopenharmony_ci	struct list_head active_devices;
6368c2ecf20Sopenharmony_ci	struct list_head inactive_devices;
6378c2ecf20Sopenharmony_ci	struct dasd_unit_address_configuration *uac;
6388c2ecf20Sopenharmony_ci	struct summary_unit_check_work_data suc_data;
6398c2ecf20Sopenharmony_ci	struct read_uac_work_data ruac_data;
6408c2ecf20Sopenharmony_ci	struct dasd_ccw_req *rsu_cqr;
6418c2ecf20Sopenharmony_ci	struct completion lcu_setup;
6428c2ecf20Sopenharmony_ci};
6438c2ecf20Sopenharmony_ci
6448c2ecf20Sopenharmony_cistruct alias_pav_group {
6458c2ecf20Sopenharmony_ci	struct list_head group;
6468c2ecf20Sopenharmony_ci	struct dasd_uid uid;
6478c2ecf20Sopenharmony_ci	struct alias_lcu *lcu;
6488c2ecf20Sopenharmony_ci	struct list_head baselist;
6498c2ecf20Sopenharmony_ci	struct list_head aliaslist;
6508c2ecf20Sopenharmony_ci	struct dasd_device *next;
6518c2ecf20Sopenharmony_ci};
6528c2ecf20Sopenharmony_ci
6538c2ecf20Sopenharmony_cistruct dasd_conf_data {
6548c2ecf20Sopenharmony_ci	struct dasd_ned neds[5];
6558c2ecf20Sopenharmony_ci	u8 reserved[64];
6568c2ecf20Sopenharmony_ci	struct dasd_gneq gneq;
6578c2ecf20Sopenharmony_ci} __packed;
6588c2ecf20Sopenharmony_ci
6598c2ecf20Sopenharmony_cistruct dasd_eckd_private {
6608c2ecf20Sopenharmony_ci	struct dasd_eckd_characteristics rdc_data;
6618c2ecf20Sopenharmony_ci	u8 *conf_data;
6628c2ecf20Sopenharmony_ci	int conf_len;
6638c2ecf20Sopenharmony_ci
6648c2ecf20Sopenharmony_ci	/* pointers to specific parts in the conf_data */
6658c2ecf20Sopenharmony_ci	struct dasd_ned *ned;
6668c2ecf20Sopenharmony_ci	struct dasd_sneq *sneq;
6678c2ecf20Sopenharmony_ci	struct vd_sneq *vdsneq;
6688c2ecf20Sopenharmony_ci	struct dasd_gneq *gneq;
6698c2ecf20Sopenharmony_ci
6708c2ecf20Sopenharmony_ci	struct eckd_count count_area[5];
6718c2ecf20Sopenharmony_ci	int init_cqr_status;
6728c2ecf20Sopenharmony_ci	int uses_cdl;
6738c2ecf20Sopenharmony_ci	struct attrib_data_t attrib;	/* e.g. cache operations */
6748c2ecf20Sopenharmony_ci	struct dasd_rssd_features features;
6758c2ecf20Sopenharmony_ci	struct dasd_rssd_vsq vsq;
6768c2ecf20Sopenharmony_ci	struct dasd_ext_pool_sum eps;
6778c2ecf20Sopenharmony_ci	u32 real_cyl;
6788c2ecf20Sopenharmony_ci
6798c2ecf20Sopenharmony_ci	/* alias managemnet */
6808c2ecf20Sopenharmony_ci	struct dasd_uid uid;
6818c2ecf20Sopenharmony_ci	struct alias_pav_group *pavgroup;
6828c2ecf20Sopenharmony_ci	struct alias_lcu *lcu;
6838c2ecf20Sopenharmony_ci	int count;
6848c2ecf20Sopenharmony_ci
6858c2ecf20Sopenharmony_ci	u32 fcx_max_data;
6868c2ecf20Sopenharmony_ci	char suc_reason;
6878c2ecf20Sopenharmony_ci};
6888c2ecf20Sopenharmony_ci
6898c2ecf20Sopenharmony_ci
6908c2ecf20Sopenharmony_ci
6918c2ecf20Sopenharmony_ciint dasd_alias_make_device_known_to_lcu(struct dasd_device *);
6928c2ecf20Sopenharmony_civoid dasd_alias_disconnect_device_from_lcu(struct dasd_device *);
6938c2ecf20Sopenharmony_ciint dasd_alias_add_device(struct dasd_device *);
6948c2ecf20Sopenharmony_ciint dasd_alias_remove_device(struct dasd_device *);
6958c2ecf20Sopenharmony_cistruct dasd_device *dasd_alias_get_start_dev(struct dasd_device *);
6968c2ecf20Sopenharmony_civoid dasd_alias_handle_summary_unit_check(struct work_struct *);
6978c2ecf20Sopenharmony_civoid dasd_eckd_reset_ccw_to_base_io(struct dasd_ccw_req *);
6988c2ecf20Sopenharmony_ciint dasd_alias_update_add_device(struct dasd_device *);
6998c2ecf20Sopenharmony_ci#endif				/* DASD_ECKD_H */
700