dasd_diag.h 2.6 KB

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