dasd_diag.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /*
  2. * File...........: linux/drivers/s390/block/dasd_diag.h
  3. * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
  4. * Based on.......: linux/drivers/s390/block/mdisk.h
  5. * ...............: by Hartmunt Penner <hpenner@de.ibm.com>
  6. * Bugreports.to..: <Linux390@de.ibm.com>
  7. * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
  8. *
  9. * $Revision: 1.7 $
  10. */
  11. #define MDSK_WRITE_REQ 0x01
  12. #define MDSK_READ_REQ 0x02
  13. #define INIT_BIO 0x00
  14. #define RW_BIO 0x01
  15. #define TERM_BIO 0x02
  16. #define DEV_CLASS_FBA 0x01
  17. #define DEV_CLASS_ECKD 0x04
  18. #define DASD_DIAG_LC_INT_CODE 132
  19. #define DASD_DIAG_LC_INT_STATUS 133
  20. #define DASD_DIAG_LC_INT_PARM_31BIT 128
  21. #define DASD_DIAG_LC_INT_PARM_64BIT 4536
  22. #define DASD_DIAG_CODE_31BIT 0x03
  23. #define DASD_DIAG_CODE_64BIT 0x07
  24. #define DASD_DIAG_RWFLAG_ASYNC 0x02
  25. #define DASD_DIAG_RWFLAG_NOCACHE 0x01
  26. #define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80
  27. struct dasd_diag_characteristics {
  28. u16 dev_nr;
  29. u16 rdc_len;
  30. u8 vdev_class;
  31. u8 vdev_type;
  32. u8 vdev_status;
  33. u8 vdev_flags;
  34. u8 rdev_class;
  35. u8 rdev_type;
  36. u8 rdev_model;
  37. u8 rdev_features;
  38. } __attribute__ ((packed, aligned(4)));
  39. struct dasd_diag_cms_label {
  40. u8 label_id[4];
  41. u8 vol_id[6];
  42. u16 version_id;
  43. u32 block_size;
  44. u32 origin_ptr;
  45. u32 usable_count;
  46. u32 formatted_count;
  47. u32 block_count;
  48. u32 used_count;
  49. u32 fst_size;
  50. u32 fst_count;
  51. u8 format_date[6];
  52. u8 reserved1[2];
  53. u32 disk_offset;
  54. u32 map_block;
  55. u32 hblk_disp;
  56. u32 user_disp;
  57. u8 reserved2[4];
  58. u8 segment_name[8];
  59. } __attribute__ ((packed));
  60. #ifdef CONFIG_ARCH_S390X
  61. #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
  62. typedef u64 blocknum_t;
  63. typedef s64 sblocknum_t;
  64. struct dasd_diag_bio {
  65. u8 type;
  66. u8 status;
  67. u8 spare1[2];
  68. u32 alet;
  69. blocknum_t block_number;
  70. u64 buffer;
  71. } __attribute__ ((packed, aligned(8)));
  72. struct dasd_diag_init_io {
  73. u16 dev_nr;
  74. u8 flaga;
  75. u8 spare1[21];
  76. u32 block_size;
  77. u8 spare2[4];
  78. blocknum_t offset;
  79. sblocknum_t start_block;
  80. blocknum_t end_block;
  81. u8 spare3[8];
  82. } __attribute__ ((packed, aligned(8)));
  83. struct dasd_diag_rw_io {
  84. u16 dev_nr;
  85. u8 flaga;
  86. u8 spare1[21];
  87. u8 key;
  88. u8 flags;
  89. u8 spare2[2];
  90. u32 block_count;
  91. u32 alet;
  92. u8 spare3[4];
  93. u64 interrupt_params;
  94. u64 bio_list;
  95. u8 spare4[8];
  96. } __attribute__ ((packed, aligned(8)));
  97. #else /* CONFIG_ARCH_S390X */
  98. #define DASD_DIAG_FLAGA_DEFAULT 0x0
  99. typedef u32 blocknum_t;
  100. typedef s32 sblocknum_t;
  101. struct dasd_diag_bio {
  102. u8 type;
  103. u8 status;
  104. u16 spare1;
  105. blocknum_t block_number;
  106. u32 alet;
  107. u32 buffer;
  108. } __attribute__ ((packed, aligned(8)));
  109. struct dasd_diag_init_io {
  110. u16 dev_nr;
  111. u8 flaga;
  112. u8 spare1[21];
  113. u32 block_size;
  114. blocknum_t offset;
  115. sblocknum_t start_block;
  116. blocknum_t end_block;
  117. u8 spare2[24];
  118. } __attribute__ ((packed, aligned(8)));
  119. struct dasd_diag_rw_io {
  120. u16 dev_nr;
  121. u8 flaga;
  122. u8 spare1[21];
  123. u8 key;
  124. u8 flags;
  125. u8 spare2[2];
  126. u32 block_count;
  127. u32 alet;
  128. u32 bio_list;
  129. u32 interrupt_params;
  130. u8 spare3[20];
  131. } __attribute__ ((packed, aligned(8)));
  132. #endif /* CONFIG_ARCH_S390X */