dasd_diag.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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.9 $
  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. #ifdef CONFIG_64BIT
  40. #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT
  41. typedef u64 blocknum_t;
  42. typedef s64 sblocknum_t;
  43. struct dasd_diag_bio {
  44. u8 type;
  45. u8 status;
  46. u8 spare1[2];
  47. u32 alet;
  48. blocknum_t block_number;
  49. void *buffer;
  50. } __attribute__ ((packed, aligned(8)));
  51. struct dasd_diag_init_io {
  52. u16 dev_nr;
  53. u8 flaga;
  54. u8 spare1[21];
  55. u32 block_size;
  56. u8 spare2[4];
  57. blocknum_t offset;
  58. sblocknum_t start_block;
  59. blocknum_t end_block;
  60. u8 spare3[8];
  61. } __attribute__ ((packed, aligned(8)));
  62. struct dasd_diag_rw_io {
  63. u16 dev_nr;
  64. u8 flaga;
  65. u8 spare1[21];
  66. u8 key;
  67. u8 flags;
  68. u8 spare2[2];
  69. u32 block_count;
  70. u32 alet;
  71. u8 spare3[4];
  72. u64 interrupt_params;
  73. struct dasd_diag_bio *bio_list;
  74. u8 spare4[8];
  75. } __attribute__ ((packed, aligned(8)));
  76. #else /* CONFIG_64BIT */
  77. #define DASD_DIAG_FLAGA_DEFAULT 0x0
  78. typedef u32 blocknum_t;
  79. typedef s32 sblocknum_t;
  80. struct dasd_diag_bio {
  81. u8 type;
  82. u8 status;
  83. u16 spare1;
  84. blocknum_t block_number;
  85. u32 alet;
  86. void *buffer;
  87. } __attribute__ ((packed, aligned(8)));
  88. struct dasd_diag_init_io {
  89. u16 dev_nr;
  90. u8 flaga;
  91. u8 spare1[21];
  92. u32 block_size;
  93. blocknum_t offset;
  94. sblocknum_t start_block;
  95. blocknum_t end_block;
  96. u8 spare2[24];
  97. } __attribute__ ((packed, aligned(8)));
  98. struct dasd_diag_rw_io {
  99. u16 dev_nr;
  100. u8 flaga;
  101. u8 spare1[21];
  102. u8 key;
  103. u8 flags;
  104. u8 spare2[2];
  105. u32 block_count;
  106. u32 alet;
  107. struct dasd_diag_bio *bio_list;
  108. u32 interrupt_params;
  109. u8 spare3[20];
  110. } __attribute__ ((packed, aligned(8)));
  111. #endif /* CONFIG_64BIT */