linux-old/drivers/s390/block/dasd_eckd.h
<<
>>
Prefs
   1/* 
   2 * File...........: linux/drivers/s390/block/dasd_eckd.h
   3 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
   4 *                  Horst Hummel <Horst.Hummel@de.ibm.com> 
   5 * Bugreports.to..: <Linux390@de.ibm.com>
   6 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
   7 *
   8 * $Revision: 1.14 $
   9 *
  10 * History of changes 
  11 * 
  12 */
  13
  14#ifndef DASD_ECKD_H
  15#define DASD_ECKD_H
  16
  17#include "dasd_3990_erp.h"
  18#include "dasd_9343_erp.h"
  19
  20/*******************************************************************************
  21 * SECTION: CCW Definitions
  22 ******************************************************************************/
  23#define DASD_ECKD_CCW_WRITE              0x05
  24#define DASD_ECKD_CCW_READ               0x06
  25#define DASD_ECKD_CCW_WRITE_HOME_ADDRESS 0x09
  26#define DASD_ECKD_CCW_READ_HOME_ADDRESS  0x0a
  27#define DASD_ECKD_CCW_WRITE_KD           0x0d
  28#define DASD_ECKD_CCW_READ_KD            0x0e
  29#define DASD_ECKD_CCW_ERASE              0x11
  30#define DASD_ECKD_CCW_READ_COUNT         0x12
  31#define DASD_ECKD_CCW_SLCK               0x14
  32#define DASD_ECKD_CCW_WRITE_RECORD_ZERO  0x15
  33#define DASD_ECKD_CCW_READ_RECORD_ZERO   0x16
  34#define DASD_ECKD_CCW_WRITE_CKD          0x1d
  35#define DASD_ECKD_CCW_READ_CKD           0x1e
  36#define DASD_ECKD_CCW_PSF                0x27
  37#define DASD_ECKD_CCW_RSSD               0x3e
  38#define DASD_ECKD_CCW_LOCATE_RECORD      0x47
  39#define DASD_ECKD_CCW_DEFINE_EXTENT      0x63
  40#define DASD_ECKD_CCW_WRITE_MT           0x85
  41#define DASD_ECKD_CCW_READ_MT            0x86
  42#define DASD_ECKD_CCW_WRITE_KD_MT        0x8d
  43#define DASD_ECKD_CCW_READ_KD_MT         0x8e
  44#define DASD_ECKD_CCW_RELEASE            0x94
  45#define DASD_ECKD_CCW_READ_CKD_MT        0x9e
  46#define DASD_ECKD_CCW_WRITE_CKD_MT       0x9d
  47#define DASD_ECKD_CCW_RESERVE            0xB4
  48
  49/*
  50 *Perform Subsystem Function / Sub-Orders
  51 */
  52#define PSF_ORDER_PRSSD                  0x18
  53
  54
  55/*******************************************************************************
  56 * SECTION: Type Definitions
  57 ******************************************************************************/
  58
  59typedef struct eckd_count_t {
  60        __u16 cyl;
  61        __u16 head;
  62        __u8 record;
  63        __u8 kl;
  64        __u16 dl;
  65} __attribute__ ((packed)) eckd_count_t;
  66
  67
  68typedef struct ch_t {
  69        __u16 cyl;
  70        __u16 head;
  71} __attribute__ ((packed)) ch_t;
  72
  73
  74typedef struct chs_t {
  75        __u16 cyl;
  76        __u16 head;
  77        __u32 sector;
  78} __attribute__ ((packed)) chs_t;
  79
  80
  81typedef struct chr_t {
  82        __u16 cyl;
  83        __u16 head;
  84        __u8 record;
  85} __attribute__ ((packed)) chr_t;
  86
  87
  88typedef struct geom_t {
  89        __u16 cyl;
  90        __u16 head;
  91        __u32 sector;
  92} __attribute__ ((packed)) geom_t;
  93
  94
  95typedef struct eckd_home_t {
  96        __u8 skip_control[14];
  97        __u16 cell_number;
  98        __u8 physical_addr[3];
  99        __u8 flag;
 100        ch_t track_addr;
 101        __u8 reserved;
 102        __u8 key_length;
 103        __u8 reserved2[2];
 104} __attribute__ ((packed)) eckd_home_t;
 105
 106
 107typedef struct DE_eckd_data_t {
 108        struct {
 109                unsigned char perm:2;   /* Permissions on this extent */
 110                unsigned char reserved:1;
 111                unsigned char seek:2;   /* Seek control */
 112                unsigned char auth:2;   /* Access authorization */
 113                unsigned char pci:1;    /* PCI Fetch mode */
 114        } __attribute__ ((packed)) mask;
 115        struct {
 116                unsigned char mode:2;   /* Architecture mode */
 117                unsigned char ckd:1;    /* CKD Conversion */
 118                unsigned char operation:3;      /* Operation mode */
 119                unsigned char cfw:1;    /* Cache fast write */
 120                unsigned char dfw:1;    /* DASD fast write */
 121        } __attribute__ ((packed)) attributes;
 122        __u16 blk_size;         /* Blocksize */
 123        __u16 fast_write_id;
 124        __u8 ga_additional;     /* Global Attributes Additional */
 125        __u8 ga_extended;       /* Global Attributes Extended   */
 126        ch_t beg_ext;
 127        ch_t end_ext;
 128        unsigned long long ep_sys_time; /* Extended Parameter - System Time Stamp */
 129        __u8 ep_format;        /* Extended Parameter format byte       */
 130        __u8 ep_prio;          /* Extended Parameter priority I/O byte */
 131        __u8 ep_reserved[6];   /* Extended Parameter Reserved          */
 132} __attribute__ ((packed)) DE_eckd_data_t;
 133
 134
 135typedef struct LO_eckd_data_t {
 136        struct {
 137                unsigned char orientation:2;
 138                unsigned char operation:6;
 139        } __attribute__ ((packed)) operation;
 140        struct {
 141                unsigned char last_bytes_used:1;
 142                unsigned char reserved:6;
 143                unsigned char read_count_suffix:1;
 144        } __attribute__ ((packed)) auxiliary;
 145        __u8 unused;
 146        __u8 count;
 147        ch_t seek_addr;
 148        chr_t search_arg;
 149        __u8 sector;
 150        __u16 length;
 151} __attribute__ ((packed)) LO_eckd_data_t;
 152
 153
 154typedef struct dasd_eckd_characteristics_t {
 155        __u16 cu_type;
 156        struct {
 157                unsigned char support:2;
 158                unsigned char async:1;
 159                unsigned char reserved:1;
 160                unsigned char cache_info:1;
 161                unsigned char model:3;
 162        } __attribute__ ((packed)) cu_model;
 163        __u16 dev_type;
 164        __u8 dev_model;
 165        struct {
 166                unsigned char mult_burst:1;
 167                unsigned char RT_in_LR:1;
 168                unsigned char reserved1:1;
 169                unsigned char RD_IN_LR:1;
 170                unsigned char reserved2:4;
 171                unsigned char reserved3:8;
 172                unsigned char defect_wr:1;
 173                unsigned char XRC_supported:1; 
 174                unsigned char reserved4:1;
 175                unsigned char striping:1;
 176                unsigned char reserved5:4;
 177                unsigned char cfw:1;
 178                unsigned char reserved6:2;
 179                unsigned char cache:1;
 180                unsigned char dual_copy:1;
 181                unsigned char dfw:1;
 182                unsigned char reset_alleg:1;
 183                unsigned char sense_down:1;
 184        } __attribute__ ((packed)) facilities;
 185        __u8 dev_class;
 186        __u8 unit_type;
 187        __u16 no_cyl;
 188        __u16 trk_per_cyl;
 189        __u8 sec_per_trk;
 190        __u8 byte_per_track[3];
 191        __u16 home_bytes;
 192        __u8 formula;
 193        union {
 194                struct {
 195                        __u8 f1;
 196                        __u16 f2;
 197                        __u16 f3;
 198                } __attribute__ ((packed)) f_0x01;
 199                struct {
 200                        __u8 f1;
 201                        __u8 f2;
 202                        __u8 f3;
 203                        __u8 f4;
 204                        __u8 f5;
 205                } __attribute__ ((packed)) f_0x02;
 206        } __attribute__ ((packed)) factors;
 207        __u16 first_alt_trk;
 208        __u16 no_alt_trk;
 209        __u16 first_dia_trk;
 210        __u16 no_dia_trk;
 211        __u16 first_sup_trk;
 212        __u16 no_sup_trk;
 213        __u8 MDR_ID;
 214        __u8 OBR_ID;
 215        __u8 director;
 216        __u8 rd_trk_set;
 217        __u16 max_rec_zero;
 218        __u8 reserved1;
 219        __u8 RWANY_in_LR;
 220        __u8 factor6;
 221        __u8 factor7;
 222        __u8 factor8;
 223        __u8 reserved2[3];
 224        __u8 reserved3[10];
 225} __attribute__ ((packed)) dasd_eckd_characteristics_t;
 226
 227typedef struct dasd_eckd_confdata_t {
 228        struct {
 229                struct {
 230                        unsigned char identifier:2;
 231                        unsigned char token_id:1;
 232                        unsigned char sno_valid:1;
 233                        unsigned char subst_sno:1;
 234                        unsigned char recNED:1;
 235                        unsigned char emuNED:1;
 236                        unsigned char reserved:1;
 237                } __attribute__ ((packed)) flags;
 238                __u8 descriptor;
 239                __u8 dev_class;
 240                __u8 reserved;
 241                unsigned char dev_type[6];
 242                unsigned char dev_model[3];
 243                unsigned char HDA_manufacturer[3];
 244                unsigned char HDA_location[2];
 245                unsigned char HDA_seqno[12];
 246                __u16 ID;
 247        } __attribute__ ((packed)) ned1;
 248        struct {
 249                struct {
 250                        unsigned char identifier:2;
 251                        unsigned char token_id:1;
 252                        unsigned char sno_valid:1;
 253                        unsigned char subst_sno:1;
 254                        unsigned char recNED:1;
 255                        unsigned char emuNED:1;
 256                        unsigned char reserved:1;
 257                } __attribute__ ((packed)) flags;
 258                __u8 descriptor;
 259                __u8 reserved[2];
 260                unsigned char dev_type[6];
 261                unsigned char dev_model[3];
 262                unsigned char DASD_manufacturer[3];
 263                unsigned char DASD_location[2];
 264                unsigned char DASD_seqno[12];
 265                __u16 ID;
 266        } __attribute__ ((packed)) ned2;
 267        struct {
 268                struct {
 269                        unsigned char identifier:2;
 270                        unsigned char token_id:1;
 271                        unsigned char sno_valid:1;
 272                        unsigned char subst_sno:1;
 273                        unsigned char recNED:1;
 274                        unsigned char emuNED:1;
 275                        unsigned char reserved:1;
 276                } __attribute__ ((packed)) flags;
 277                __u8 descriptor;
 278                __u8 reserved[2];
 279                unsigned char cont_type[6];
 280                unsigned char cont_model[3];
 281                unsigned char cont_manufacturer[3];
 282                unsigned char cont_location[2];
 283                unsigned char cont_seqno[12];
 284                __u16 ID;
 285        } __attribute__ ((packed)) ned3;
 286        struct {
 287                struct {
 288                        unsigned char identifier:2;
 289                        unsigned char token_id:1;
 290                        unsigned char sno_valid:1;
 291                        unsigned char subst_sno:1;
 292                        unsigned char recNED:1;
 293                        unsigned char emuNED:1;
 294                        unsigned char reserved:1;
 295                } __attribute__ ((packed)) flags;
 296                __u8 descriptor;
 297                __u8 reserved[2];
 298                unsigned char cont_type[6];
 299                unsigned char empty[3];
 300                unsigned char cont_manufacturer[3];
 301                unsigned char cont_location[2];
 302                unsigned char cont_seqno[12];
 303                __u16 ID;
 304        } __attribute__ ((packed)) ned4;
 305        unsigned char ned5[32];
 306        unsigned char ned6[32];
 307        unsigned char ned7[32];
 308        struct {
 309                struct {
 310                        unsigned char identifier:2;
 311                        unsigned char reserved:6;
 312                } __attribute__ ((packed)) flags;
 313                __u8 selector;
 314                __u16 interfaceID;
 315                __u32 reserved;
 316                __u16 subsystemID;
 317                struct {
 318                        unsigned char sp0:1;
 319                        unsigned char sp1:1;
 320                        unsigned char reserved:5;
 321                        unsigned char scluster:1;
 322                } __attribute__ ((packed)) spathID;
 323                __u8 unit_address;
 324                __u8 dev_ID;
 325                __u8 dev_address;
 326                __u8 adapterID;
 327                __u16 link_address;
 328                struct {
 329                        unsigned char parallel:1;
 330                        unsigned char escon:1;
 331                        unsigned char reserved:1;
 332                        unsigned char ficon:1;
 333                        unsigned char reserved2:4;
 334                } __attribute__ ((packed)) protocol_type;
 335                struct {
 336                        unsigned char PID_in_236:1;
 337                        unsigned char reserved:7;
 338                } __attribute__ ((packed)) format_flags;
 339                __u8 log_dev_address;
 340                unsigned char reserved2[12];
 341        } __attribute__ ((packed)) neq;
 342} __attribute__ ((packed)) dasd_eckd_confdata_t;
 343
 344/*
 345 * Perform Subsystem Function - Prepare for Read Subsystem Data  
 346 */
 347typedef struct dasd_psf_prssd_data_t {
 348        unsigned char order;
 349        unsigned char flags;
 350        unsigned char reserved[4];
 351        unsigned char suborder;
 352        unsigned char varies[9];
 353} __attribute__((packed)) dasd_psf_prssd_data_t;
 354
 355
 356
 357int dasd_eckd_init (void);
 358void dasd_eckd_cleanup (void);
 359#endif                          /* DASD_ECKD_H */
 360
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.