home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.2 / LINUX-1.2 / LINUX-1 / linux / drivers / scsi / seagate.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-30  |  2.8 KB  |  137 lines

  1. /*
  2.  *    seagate.h Copyright (C) 1992 Drew Eckhardt 
  3.  *    low level scsi driver header for ST01/ST02 by
  4.  *        Drew Eckhardt 
  5.  *
  6.  *    <drew@colorado.edu>
  7.  */
  8.  
  9. #ifndef _SEAGATE_H
  10.     #define SEAGATE_H
  11. /*
  12.     $Header
  13. */
  14. #ifndef ASM
  15. int seagate_st0x_detect(Scsi_Host_Template *);
  16. int seagate_st0x_command(Scsi_Cmnd *);
  17. int seagate_st0x_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
  18.  
  19. int seagate_st0x_abort(Scsi_Cmnd *);
  20. const char *seagate_st0x_info(struct Scsi_Host *);
  21. int seagate_st0x_reset(Scsi_Cmnd *); 
  22.  
  23. #ifndef NULL
  24.     #define NULL 0
  25. #endif
  26.  
  27. int seagate_st0x_biosparam(Disk *, int, int*);
  28.  
  29. #define SEAGATE_ST0X  {NULL, NULL, NULL, seagate_st0x_detect,         \
  30.              NULL,                         \
  31.              seagate_st0x_info, seagate_st0x_command,      \
  32.              seagate_st0x_queue_command, seagate_st0x_abort, \
  33.              seagate_st0x_reset, NULL, seagate_st0x_biosparam, \
  34.              1, 7, SG_ALL, 1, 0, 0, DISABLE_CLUSTERING}
  35. #endif
  36.  
  37.  
  38. /*
  39.     defining PARITY causes parity data to be checked
  40. */
  41.  
  42. #define PARITY
  43.  
  44.  
  45. /*
  46.     Thanks to Brian Antoine for the example code in his Messy-Loss ST-01
  47.         driver, and Mitsugu Suzuki for information on the ST-01
  48.         SCSI host.
  49. */
  50.  
  51. /*
  52.     CONTROL defines
  53. */
  54.  
  55. #define CMD_RST         0x01
  56. #define CMD_SEL         0x02
  57. #define CMD_BSY         0x04
  58. #define CMD_ATTN            0x08
  59. #define CMD_START_ARB        0x10
  60. #define CMD_EN_PARITY        0x20
  61. #define CMD_INTR        0x40
  62. #define CMD_DRVR_ENABLE        0x80
  63.  
  64. /*
  65.     STATUS
  66. */
  67.  
  68. #define STAT_BSY        0x01
  69. #define STAT_MSG        0x02
  70. #define STAT_IO            0x04
  71. #define STAT_CD            0x08
  72. #define STAT_REQ        0x10
  73. #define STAT_SEL        0x20
  74. #define STAT_PARITY        0x40
  75. #define STAT_ARB_CMPL        0x80
  76.  
  77. /* 
  78.     REQUESTS
  79. */
  80.  
  81. #define REQ_MASK (STAT_CD |  STAT_IO | STAT_MSG)
  82. #define REQ_DATAOUT 0
  83. #define REQ_DATAIN STAT_IO
  84. #define REQ_CMDOUT STAT_CD
  85. #define REQ_STATIN (STAT_CD | STAT_IO)
  86. #define REQ_MSGOUT (STAT_MSG | STAT_CD)
  87. #define REQ_MSGIN (STAT_MSG | STAT_CD | STAT_IO)
  88.  
  89. extern volatile int seagate_st0x_timeout;
  90.  
  91. #ifdef PARITY
  92.     #define BASE_CMD CMD_EN_PARITY
  93. #else
  94.     #define BASE_CMD  0
  95. #endif
  96.  
  97. /*
  98.     Debugging code
  99. */
  100.  
  101. #define PHASE_BUS_FREE 1
  102. #define PHASE_ARBITRATION 2
  103. #define PHASE_SELECTION 4
  104. #define PHASE_DATAIN 8 
  105. #define PHASE_DATAOUT 0x10
  106. #define PHASE_CMDOUT 0x20
  107. #define PHASE_MSGIN 0x40
  108. #define PHASE_MSGOUT 0x80
  109. #define PHASE_STATUSIN 0x100
  110. #define PHASE_ETC (PHASE_DATAIN | PHASE_DATA_OUT | PHASE_CMDOUT | PHASE_MSGIN | PHASE_MSGOUT | PHASE_STATUSIN)
  111. #define PRINT_COMMAND 0x200
  112. #define PHASE_EXIT 0x400
  113. #define PHASE_RESELECT 0x800
  114. #define DEBUG_FAST 0x1000
  115. #define DEBUG_SG   0x2000
  116. #define DEBUG_LINKED    0x4000
  117. #define DEBUG_BORKEN    0x8000
  118.  
  119. /* 
  120.  *    Control options - these are timeouts specified in .01 seconds.
  121.  */
  122.  
  123. /* 30, 20 work */
  124. #define ST0X_BUS_FREE_DELAY 25
  125. #define ST0X_SELECTION_DELAY 25
  126.  
  127. #define eoi() __asm__("push %%eax\nmovb $0x20, %%al\noutb %%al, $0x20\npop %%eax"::)
  128.     
  129. #define SEAGATE 1    /* these determine the type of the controller */
  130. #define FD    2
  131.  
  132. #define ST0X_ID_STR    "Seagate ST-01/ST-02"
  133. #define FD_ID_STR    "TMC-8XX/TMC-950"
  134.  
  135. #endif
  136.  
  137.