[S390] dasd: add High Performance FICON support
[pandora-kernel.git] / drivers / s390 / block / dasd_eckd.h
index eecfa77..ad45bca 100644 (file)
 #define DASD_ECKD_CCW_RELEASE           0x94
 #define DASD_ECKD_CCW_READ_CKD_MT       0x9e
 #define DASD_ECKD_CCW_WRITE_CKD_MT      0x9d
+#define DASD_ECKD_CCW_WRITE_TRACK_DATA  0xA5
+#define DASD_ECKD_CCW_READ_TRACK_DATA   0xA6
 #define DASD_ECKD_CCW_RESERVE           0xB4
 #define DASD_ECKD_CCW_PFX               0xE7
+#define DASD_ECKD_CCW_PFX_READ          0xEA
 #define DASD_ECKD_CCW_RSCK              0xF9
 
 /*
@@ -123,7 +126,9 @@ struct DE_eckd_data {
        unsigned long long ep_sys_time; /* Ext Parameter - System Time Stamp */
        __u8 ep_format;        /* Extended Parameter format byte       */
        __u8 ep_prio;          /* Extended Parameter priority I/O byte */
-       __u8 ep_reserved[6];   /* Extended Parameter Reserved          */
+       __u8 ep_reserved1;     /* Extended Parameter Reserved          */
+       __u8 ep_rec_per_track; /* Number of records on a track         */
+       __u8 ep_reserved[4];   /* Extended Parameter Reserved          */
 } __attribute__ ((packed));
 
 struct LO_eckd_data {
@@ -144,11 +149,37 @@ struct LO_eckd_data {
        __u16 length;
 } __attribute__ ((packed));
 
+struct LRE_eckd_data {
+       struct {
+               unsigned char orientation:2;
+               unsigned char operation:6;
+       } __attribute__ ((packed)) operation;
+       struct {
+               unsigned char length_valid:1;
+               unsigned char length_scope:1;
+               unsigned char imbedded_ccw_valid:1;
+               unsigned char check_bytes:2;
+               unsigned char imbedded_count_valid:1;
+               unsigned char reserved:1;
+               unsigned char read_count_suffix:1;
+       } __attribute__ ((packed)) auxiliary;
+       __u8 imbedded_ccw;
+       __u8 count;
+       struct ch_t seek_addr;
+       struct chr_t search_arg;
+       __u8 sector;
+       __u16 length;
+       __u8 imbedded_count;
+       __u8 extended_operation;
+       __u16 extended_parameter_length;
+       __u8 extended_parameter[0];
+} __attribute__ ((packed));
+
 /* Prefix data for format 0x00 and 0x01 */
 struct PFX_eckd_data {
        unsigned char format;
        struct {
-               unsigned char define_extend:1;
+               unsigned char define_extent:1;
                unsigned char time_stamp:1;
                unsigned char verify_base:1;
                unsigned char hyper_pav:1;
@@ -158,9 +189,8 @@ struct PFX_eckd_data {
        __u8 aux;
        __u8 base_lss;
        __u8 reserved[7];
-       struct DE_eckd_data define_extend;
-       struct LO_eckd_data locate_record;
-       __u8 LO_extended_data[4];
+       struct DE_eckd_data define_extent;
+       struct LRE_eckd_data locate_record;
 } __attribute__ ((packed));
 
 struct dasd_eckd_characteristics {