FreeBSD/Linux Kernel Cross Reference
sys/dev/sym/sym_conf.h
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
|