sym_conf.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:9k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * Device driver for the SYMBIOS/LSILOGIC 53C8XX and 53C1010 family 
  3.  * of PCI-SCSI IO processors.
  4.  *
  5.  * Copyright (C) 1999-2001  Gerard Roudier <groudier@free.fr>
  6.  *
  7.  * This driver is derived from the Linux sym53c8xx driver.
  8.  * Copyright (C) 1998-2000  Gerard Roudier
  9.  *
  10.  * The sym53c8xx driver is derived from the ncr53c8xx driver that had been 
  11.  * a port of the FreeBSD ncr driver to Linux-1.2.13.
  12.  *
  13.  * The original ncr driver has been written for 386bsd and FreeBSD by
  14.  *         Wolfgang Stanglmeier        <wolf@cologne.de>
  15.  *         Stefan Esser                <se@mi.Uni-Koeln.de>
  16.  * Copyright (C) 1994  Wolfgang Stanglmeier
  17.  *
  18.  * Other major contributions:
  19.  *
  20.  * NVRAM detection and reading.
  21.  * Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
  22.  *
  23.  *-----------------------------------------------------------------------------
  24.  *
  25.  * Redistribution and use in source and binary forms, with or without
  26.  * modification, are permitted provided that the following conditions
  27.  * are met:
  28.  * 1. Redistributions of source code must retain the above copyright
  29.  *    notice, this list of conditions and the following disclaimer.
  30.  * 2. The name of the author may not be used to endorse or promote products
  31.  *    derived from this software without specific prior written permission.
  32.  *
  33.  * Where this Software is combined with software released under the terms of 
  34.  * the GNU Public License ("GPL") and the terms of the GPL would require the 
  35.  * combined work to also be released under the terms of the GPL, the terms
  36.  * and conditions of this License will apply in addition to those of the
  37.  * GPL with the exception of any terms or conditions of this License that
  38.  * conflict with, or are expressly prohibited by, the GPL.
  39.  *
  40.  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
  41.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  42.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  43.  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
  44.  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  45.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  46.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  47.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  48.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  49.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  50.  * SUCH DAMAGE.
  51.  */
  52. #ifndef SYM_CONF_H
  53. #define SYM_CONF_H
  54. /*-------------------------------------------------------------------
  55.  *  Static configuration.
  56.  *-------------------------------------------------------------------
  57.  */
  58. /*
  59.  *  Also support early NCR 810, 815 and 825 chips.
  60.  */
  61. #ifndef SYM_CONF_GENERIC_SUPPORT
  62. #define SYM_CONF_GENERIC_SUPPORT (1)
  63. #endif
  64. /*
  65.  *  Use Normal IO instead of MMIO.
  66.  */
  67. /* #define SYM_CONF_IOMAPPED */
  68. /*
  69.  *  Max tags for a device (logical unit)
  70.  *  We use a power of 2, (7) means 2<<7=128
  71.  *  Maximum is 8 -> 256 tags
  72.  */
  73. #ifndef SYM_CONF_MAX_TAG_ORDER
  74. #define SYM_CONF_MAX_TAG_ORDER (6)
  75. #endif
  76. /*
  77.  *  Max number of scatter/gather entries for en IO.
  78.  *  Each entry costs 8 bytes in the internal CCB data structure.
  79.  */
  80. #ifndef SYM_CONF_MAX_SG
  81. #define SYM_CONF_MAX_SG (33)
  82. #endif
  83. /*
  84.  *  Max number of targets.
  85.  *  Maximum is 16 and you are advised not to change this value.
  86.  */
  87. #ifndef SYM_CONF_MAX_TARGET
  88. #define SYM_CONF_MAX_TARGET (16)
  89. #endif
  90. /*
  91.  *  Max number of logical units.
  92.  *  SPI-2 allows up to 64 logical units, but in real life, target
  93.  *  that implements more that 7 logical units are pretty rare.
  94.  *  Anyway, the cost of accepting up to 64 logical unit is low in 
  95.  *  this driver, thus going with the maximum is acceptable.
  96.  */
  97. #ifndef SYM_CONF_MAX_LUN
  98. #define SYM_CONF_MAX_LUN (64)
  99. #endif
  100. /*
  101.  *  Max number of IO control blocks queued to the controller.
  102.  *  Each entry needs 8 bytes and the queues are allocated contiguously.
  103.  *  Since we donnot want to allocate more than a page, the theorical 
  104.  *  maximum is PAGE_SIZE/8. For safety, we announce a bit less to the 
  105.  *  access method. :)
  106.  *  When not supplied, as it is suggested, the driver compute some 
  107.  *  good value for this parameter.
  108.  */
  109. /* #define SYM_CONF_MAX_START (PAGE_SIZE/8 - 16) */
  110. /*
  111.  *  Support for NVRAM.
  112.  */
  113. #ifndef SYM_CONF_NVRAM_SUPPORT
  114. #define SYM_CONF_NVRAM_SUPPORT (1)
  115. #endif
  116. /*
  117.  *  Support for Immediate Arbitration.
  118.  *  Not advised.
  119.  */
  120. /* #define SYM_CONF_IARB_SUPPORT */
  121. /*
  122.  *  Support for some PCI fix-ups (or assumed so).
  123.  */
  124. #define SYM_CONF_PCI_FIX_UP
  125. /*
  126.  *  Number of lists for the optimization of the IO timeout handling.
  127.  *  Not used under FreeBSD and Linux.
  128.  */
  129. #ifndef SYM_CONF_TIMEOUT_ORDER_MAX
  130. #define SYM_CONF_TIMEOUT_ORDER_MAX (8)
  131. #endif
  132. /*
  133.  *  How the driver handles DMA addressing of user data.
  134.  *  0 : 32 bit addressing
  135.  *  1 : 40 bit addressing
  136.  *  2 : 64 bit addressing using segment registers
  137.  */
  138. #ifndef SYM_CONF_DMA_ADDRESSING_MODE
  139. #define SYM_CONF_DMA_ADDRESSING_MODE (0)
  140. #endif
  141. /*-------------------------------------------------------------------
  142.  *  Configuration that could be dynamic if it was possible 
  143.  *  to pass arguments to the driver.
  144.  *-------------------------------------------------------------------
  145.  */
  146. /*
  147.  *  HOST default scsi id.
  148.  */
  149. #ifndef SYM_SETUP_HOST_ID
  150. #define SYM_SETUP_HOST_ID 7
  151. #endif
  152. /*
  153.  *  Max synchronous transfers.
  154.  */
  155. #ifndef SYM_SETUP_MIN_SYNC
  156. #define SYM_SETUP_MIN_SYNC (9)
  157. #endif
  158. /*
  159.  *  Max wide order.
  160.  */
  161. #ifndef SYM_SETUP_MAX_WIDE
  162. #define SYM_SETUP_MAX_WIDE (1)
  163. #endif
  164. /*
  165.  *  Max SCSI offset.
  166.  */
  167. #ifndef SYM_SETUP_MAX_OFFS
  168. #define SYM_SETUP_MAX_OFFS (63)
  169. #endif
  170. /*
  171.  *  Default number of tags.
  172.  */
  173. #ifndef SYM_SETUP_MAX_TAG
  174. #define SYM_SETUP_MAX_TAG (1<<SYM_CONF_MAX_TAG_ORDER)
  175. #endif
  176. /*
  177.  *  SYMBIOS NVRAM format support.
  178.  */
  179. #ifndef SYM_SETUP_SYMBIOS_NVRAM
  180. #define SYM_SETUP_SYMBIOS_NVRAM (1)
  181. #endif
  182. /*
  183.  *  TEKRAM NVRAM format support.
  184.  */
  185. #ifndef SYM_SETUP_TEKRAM_NVRAM
  186. #define SYM_SETUP_TEKRAM_NVRAM (1)
  187. #endif
  188. /*
  189.  *  PCI parity checking.
  190.  *  It should not be an option, but some poor or broken 
  191.  *  PCI-HOST bridges have been reported to make problems 
  192.  *  when this feature is enabled.
  193.  *  Setting this option to 0 tells the driver not to 
  194.  *  enable the checking against PCI parity.
  195.  */
  196. #ifndef SYM_SETUP_PCI_PARITY
  197. #define SYM_SETUP_PCI_PARITY (2)
  198. #endif
  199. /*
  200.  *  SCSI parity checking.
  201.  */
  202. #ifndef SYM_SETUP_SCSI_PARITY
  203. #define SYM_SETUP_SCSI_PARITY (1)
  204. #endif
  205. /*
  206.  *  SCSI activity LED.
  207.  */
  208. #ifndef SYM_SETUP_SCSI_LED
  209. #define SYM_SETUP_SCSI_LED (0)
  210. #endif
  211. /*
  212.  *  SCSI High Voltage Differential support.
  213.  *
  214.  *  HVD/LVD/SE capable controllers (895, 895A, 896, 1010) 
  215.  *  report the actual SCSI BUS mode from the STEST4 IO 
  216.  *  register.
  217.  *
  218.  *  But for HVD/SE only capable chips (825a, 875, 885), 
  219.  *  the driver uses some heuristic to probe against HVD. 
  220.  *  Normally, the chip senses the DIFFSENS signal and 
  221.  *  should switch its BUS tranceivers to high impedance 
  222.  *  in situation of the driver having been wrong about 
  223.  *  the actual BUS mode. May-be, the BUS mode probing of 
  224.  *  the driver is safe, but, given that it may be partially 
  225.  *  based on some previous IO register settings, it 
  226.  *  cannot be stated so. Thus, decision has been taken 
  227.  *  to require a user option to be set for the DIFF probing 
  228.  *  to be applied for the 825a, 875 and 885 chips.
  229.  *  
  230.  *  This setup option works as follows:
  231.  *
  232.  *    0  ->  HVD only supported for 895, 895A, 896, 1010.
  233.  *    1  ->  HVD probed  for 825A, 875, 885.
  234.  *    2  ->  HVD assumed for 825A, 875, 885 (not advised).
  235.  */
  236. #ifndef SYM_SETUP_SCSI_DIFF
  237. #define SYM_SETUP_SCSI_DIFF (0)
  238. #endif
  239. /*
  240.  *  IRQ mode.
  241.  */
  242. #ifndef SYM_SETUP_IRQ_MODE
  243. #define SYM_SETUP_IRQ_MODE (0)
  244. #endif
  245. /*
  246.  *  Check SCSI BUS signal on reset.
  247.  */
  248. #ifndef SYM_SETUP_SCSI_BUS_CHECK
  249. #define SYM_SETUP_SCSI_BUS_CHECK (1)
  250. #endif
  251. /*
  252.  *  Max burst for PCI (1<<value)
  253.  *  7 means: (1<<7) = 128 DWORDS.
  254.  */
  255. #ifndef SYM_SETUP_BURST_ORDER
  256. #define SYM_SETUP_BURST_ORDER (7)
  257. #endif
  258. /*
  259.  *  Only relevant if IARB support configured.
  260.  *  - Max number of successive settings of IARB hints.
  261.  *  - Set IARB on arbitration lost.
  262.  */
  263. #define SYM_CONF_IARB_MAX 3
  264. #define SYM_CONF_SET_IARB_ON_ARB_LOST 1
  265. /*
  266.  *  Returning wrong residuals may make problems.
  267.  *  When zero, this define tells the driver to 
  268.  *  always return 0 as transfer residual.
  269.  *  Btw, all my testings of residuals have succeeded.
  270.  */
  271. #define SYM_SETUP_RESIDUAL_SUPPORT 1
  272. /*
  273.  *  Supported maximum number of LUNs to announce to 
  274.  *  the access method.
  275.  *  The driver supports up to 64 LUNs per target as 
  276.  *  required by SPI-2/SPI-3. However some SCSI devices  
  277.  *  designed prior to these specifications or not being  
  278.  *  conformant may be highly confused when they are 
  279.  *  asked about a LUN > 7.
  280.  */
  281. #ifndef SYM_SETUP_MAX_LUN
  282. #define SYM_SETUP_MAX_LUN (8)
  283. #endif
  284. /*
  285.  *  Bits indicating what kind of fix-ups we want.
  286.  *
  287.  *  Bit 0 (1) : cache line size configuration register.
  288.  *  Bit 1 (2) : MWI bit in command register.
  289.  *  Bit 2 (4) : latency timer if seems too low.
  290.  */
  291. #ifndef SYM_SETUP_PCI_FIX_UP
  292. #define SYM_SETUP_PCI_FIX_UP (3)
  293. #endif
  294. #endif /* SYM_CONF_H */