The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/sym/sym_conf.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 6ab71bdb1cdd504e5bf7ec154aa006e0


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.