dasd_diag.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. */
  10. #define MDSK_WRITE_REQ 0x01
  11. #define MDSK_READ_REQ 0x02
  12. #define INIT_BIO 0x00
  13. #define RW_BIO 0x01
  14. #define TERM_BIO 0x02
  15. #define DEV_CLASS_FBA 0x01
  16. #define DEV_CLASS_ECKD 0x04
  17. #define DASD_DIAG_CODE_31BIT 0x03
  18. #define DASD_DIAG_CODE_64BIT 0x07
  19. #define DASD_DIAG_RWFLAG_ASYNC 0x02
  20. #define DASD_DIAG_RWFLAG_NOCACHE 0x01
  21. #define DASD_DIAG_FLAGA_FORMAT_64BIT 0x80
  22. struct dasd_diag_characteristics {
  23. u16 dev_nr;
  24. u16 rdc_len;
  25. u8 vdev_class;
  26. u8 vdev_type;
  27. u8 vdev_status;
  28. u8 vdev_flags;
  29. u8 rdev_class;
  30. u8 rdev_type;
  31. u8 rdev_model;
  32. u8 rdev_features;
  33. } __attribute__ ((packed, aligned(4)));
  34. #ifdef CONFIG_64BIT
  35. #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
  36. typedef u64 blocknum_t;
  37. typedef s64 sblocknum_t;
  38. struct dasd_diag_bio {
  39. u8 type;
  40. u8 status;
  41. u8 spare1[2];
  42. u32 alet;
  43. blocknum_t block_number;
  44. void *buffer;
  45. } __attribute__ ((packed, aligned(8)));
  46. struct dasd_diag_init_io {
  47. u16 dev_nr;
  48. u8 flaga;
  49. u8 spare1[21];
  50. u32 block_size;
  51. u8 spare2[4];
  52. blocknum_t offset;
  53. sblocknum_t start_block;
  54. blocknum_t end_block;
  55. u8 spare3[8];
  56. } __attribute__ ((packed, aligned(8)));
  57. struct dasd_diag_rw_io {
  58. u16 dev_nr;
  59. u8 flaga;
  60. u8 spare1[21];
  61. u8 key;
  62. u8 flags;
  63. u8 spare2[2];
  64. u32 block_count;
  65. u32 alet;
  66. u8 spare3[4];
  67. u64 interrupt_params;
  68. struct dasd_diag_bio *bio_list;
  69. u8 spare4[8];
  70. } __attribute__ ((packed, aligned(8)));
  71. #else /* CONFIG_64BIT */
  72. #define DASD_DIAG_FLAGA_DEFAULT 0x0
  73. typedef u32 blocknum_t;
  74. typedef s32 sblocknum_t;
  75. struct dasd_diag_bio {
  76. u8 type;
  77. u8 status;
  78. u16 spare1;
  79. blocknum_t block_number;
  80. u32 alet;
  81. void *buffer;
  82. } __attribute__ ((packed, aligned(8)));
  83. struct dasd_diag_init_io {
  84. u16 dev_nr;
  85. u8 flaga;
  86. u8 spare1[21];
  87. u32 block_size;
  88. blocknum_t offset;
  89. sblocknum_t start_block;
  90. blocknum_t end_block;
  91. u8 spare2[24];
  92. } __attribute__ ((packed, aligned(8)));
  93. struct dasd_diag_rw_io {
  94. u16 dev_nr;
  95. u8 flaga;
  96. u8 spare1[21];
  97. u8 key;
  98. u8 flags;
  99. u8 spare2[2];
  100. u32 block_count;
  101. u32 alet;
  102. struct dasd_diag_bio *bio_list;
  103. u32 interrupt_params;
  104. u8 spare3[20];
  105. } __attribute__ ((packed, aligned(8)));
  106. #endif /* CONFIG_64BIT */