* The C1010 stepping B0 (Rev 1) tested OK for DT transfers without the U3EN
broken bit work-around enabled. * Fixed a bug that made MDP not work. (However, MDP is actually not tested due to lack of hardware using this feature). * Chip table changed to support the C1010 B0 w/o the U3EN bit work-around enabled. * Add the SYM_SETUP_MAX_LUN, SYM_SETUP_LP_PROBE_MAP (used to tell the driver about chips that are to be claimed with lower priority than old PCI bus based driver (typically the ncr)), SYM_SETUP_SCSI_DIFF, and SYM_SETUP_PCI_PARITY options. Submitted by: Gerard Roudier <groudier@club-internet.fr>
This commit is contained in:
parent
32632bcb71
commit
4daec0d51e
@ -65,35 +65,44 @@
|
||||
|
||||
/*
|
||||
* Support for earliest LSI53C1010 boards.
|
||||
* Commercial chips will be fixed, and then the
|
||||
* corresponding code will get useless.
|
||||
*
|
||||
* This option enables work-arounds for the experimental
|
||||
* C1010 chips revision 0 to work in DT mode.
|
||||
* Since, officially supported chips (B0 stepping and later)
|
||||
* have been fixed, nobody, except driver maintainers,
|
||||
* should ever needed this option to have been defined.
|
||||
* This option and the code it addresses will be removed
|
||||
* from the source in some later version of the driver.
|
||||
* By the way, the 53C1010 B0 stepping (rev. 1) has been
|
||||
* tested ok with Ultra3 DT data transfers using this driver,
|
||||
* without these work-arounds being enabled.
|
||||
*/
|
||||
/* #define SYMCONF_BROKEN_U3EN_SUPPORT */
|
||||
/* #define SYM_CONF_BROKEN_U3EN_SUPPORT */
|
||||
|
||||
/*
|
||||
* Use Normal IO instead of MMIO.
|
||||
*/
|
||||
/* #define SYMCONF_IOMAPPED */
|
||||
/* #define SYM_CONF_IOMAPPED */
|
||||
|
||||
/*
|
||||
* Max tags for a device (logical unit)
|
||||
* We use a power of 2, (7) means 2<<7=128
|
||||
* Maximum is 8 -> 256 tags
|
||||
*/
|
||||
#define SYMCONF_MAX_TAG_ORDER (6)
|
||||
#define SYM_CONF_MAX_TAG_ORDER (6)
|
||||
|
||||
/*
|
||||
* Max number of scatter/gather entries for en IO.
|
||||
* Each entry costs 8 bytes in the internal CCB data structure.
|
||||
* For now 65 should suffice given the BSD O/Ses capabilities.
|
||||
*/
|
||||
#define SYMCONF_MAX_SG (33)
|
||||
#define SYM_CONF_MAX_SG (33)
|
||||
|
||||
/*
|
||||
* Max number of targets.
|
||||
* Maximum is 16 and you are advised not to change this value.
|
||||
*/
|
||||
#define SYMCONF_MAX_TARGET (16)
|
||||
#define SYM_CONF_MAX_TARGET (16)
|
||||
|
||||
/*
|
||||
* Max number of logical units.
|
||||
@ -102,7 +111,7 @@
|
||||
* Anyway, the cost of accepting up to 64 logical unit is low in
|
||||
* this driver, thus going with the maximum is acceptable.
|
||||
*/
|
||||
#define SYMCONF_MAX_LUN (8)
|
||||
#define SYM_CONF_MAX_LUN (64)
|
||||
|
||||
/*
|
||||
* Max number of IO control blocks queued to the controller.
|
||||
@ -113,25 +122,25 @@
|
||||
* When not supplied, as it is suggested, the driver compute some
|
||||
* good value for this parameter.
|
||||
*/
|
||||
/* #define SYMCONF_MAX_START (PAGE_SIZE/8 - 16) */
|
||||
/* #define SYM_CONF_MAX_START (PAGE_SIZE/8 - 16) */
|
||||
|
||||
/*
|
||||
* Support for NVRAM.
|
||||
*/
|
||||
#define SYMCONF_NVRAM_SUPPORT
|
||||
/* #define SYMCONF_DEBUG_SUPPORT */
|
||||
#define SYM_CONF_NVRAM_SUPPORT
|
||||
/* #define SYM_CONF_DEBUG_SUPPORT */
|
||||
|
||||
/*
|
||||
* Support for Immediate Arbitration.
|
||||
* Not advised.
|
||||
*/
|
||||
/* #define SYMCONF_IARB_SUPPORT */
|
||||
/* #define SYM_CONF_IARB_SUPPORT */
|
||||
|
||||
/*
|
||||
* Not needed on FreeBSD, since the system allocator
|
||||
* does provide naturally aligned addresses.
|
||||
*/
|
||||
#define SYMCONF_USE_INTERNAL_ALLOCATOR
|
||||
#define SYM_CONF_USE_INTERNAL_ALLOCATOR
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
* Configuration that could be dynamic if it was possible
|
||||
@ -142,80 +151,112 @@
|
||||
/*
|
||||
* HOST default scsi id.
|
||||
*/
|
||||
#define SYMSETUP_HOST_ID 7
|
||||
#define SYM_SETUP_HOST_ID 7
|
||||
|
||||
/*
|
||||
* Max synchronous transfers.
|
||||
*/
|
||||
#define SYMSETUP_MIN_SYNC (9)
|
||||
#define SYM_SETUP_MIN_SYNC (9)
|
||||
|
||||
/*
|
||||
* Max wide order.
|
||||
*/
|
||||
#define SYMSETUP_MAX_WIDE (1)
|
||||
#define SYM_SETUP_MAX_WIDE (1)
|
||||
|
||||
/*
|
||||
* Max SCSI offset.
|
||||
*/
|
||||
#define SYMSETUP_MAX_OFFS (64)
|
||||
#define SYM_SETUP_MAX_OFFS (64)
|
||||
|
||||
/*
|
||||
* Default number of tags.
|
||||
*/
|
||||
#define SYMSETUP_MAX_TAG (64)
|
||||
#define SYM_SETUP_MAX_TAG (1<<SYM_CONF_MAX_TAG_ORDER)
|
||||
|
||||
/*
|
||||
* SYMBIOS NVRAM format support.
|
||||
*/
|
||||
#define SYMSETUP_SYMBIOS_NVRAM (1)
|
||||
#define SYM_SETUP_SYMBIOS_NVRAM (1)
|
||||
|
||||
/*
|
||||
* TEKRAM NVRAM format support.
|
||||
*/
|
||||
#define SYMSETUP_TEKRAM_NVRAM (1)
|
||||
#define SYM_SETUP_TEKRAM_NVRAM (1)
|
||||
|
||||
/*
|
||||
* PCI parity checking.
|
||||
* It should not be an option, but some poor or broken
|
||||
* PCI-HOST bridges have been reported to make problems
|
||||
* when this feature is enabled.
|
||||
* Setting this option to 0 tells the driver not to
|
||||
* enable the checking against PCI parity.
|
||||
*/
|
||||
#define SYMSETUP_PCI_PARITY (1)
|
||||
#ifndef SYM_SETUP_PCI_PARITY
|
||||
#define SYM_SETUP_PCI_PARITY (1)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SCSI parity checking.
|
||||
*/
|
||||
#define SYMSETUP_SCSI_PARITY (1)
|
||||
#define SYM_SETUP_SCSI_PARITY (1)
|
||||
|
||||
/*
|
||||
* SCSI activity LED.
|
||||
*/
|
||||
#define SYMSETUP_SCSI_LED (0)
|
||||
#define SYM_SETUP_SCSI_LED (0)
|
||||
|
||||
/*
|
||||
* SCSI differential.
|
||||
* SCSI High Voltage Differential support.
|
||||
*
|
||||
* HVD/LVD/SE capable controllers (895, 895A, 896, 1010)
|
||||
* report the actual SCSI BUS mode from the STEST4 IO
|
||||
* register.
|
||||
*
|
||||
* But for HVD/SE only capable chips (825a, 875, 885),
|
||||
* the driver uses some heuristic to probe against HVD.
|
||||
* Normally, the chip senses the DIFFSENS signal and
|
||||
* should switch its BUS tranceivers to high impedance
|
||||
* in situation of the driver having been wrong about
|
||||
* the actual BUS mode. May-be, the BUS mode probing of
|
||||
* the driver is safe, but, given that it may be partially
|
||||
* based on some previous IO register settings, it
|
||||
* cannot be stated so. Thus, decision has been taken
|
||||
* to require a user option to be set for the DIFF probing
|
||||
* to be applied for the 825a, 875 and 885 chips.
|
||||
*
|
||||
* This setup option works as follows:
|
||||
*
|
||||
* 0 -> HVD only supported for 895, 895A, 896, 1010.
|
||||
* 1 -> HVD probed for 825A, 875, 885.
|
||||
* 2 -> HVD assumed for 825A, 875, 885 (not advised).
|
||||
*/
|
||||
#define SYMSETUP_SCSI_DIFF (0)
|
||||
#ifndef SYM_SETUP_SCSI_DIFF
|
||||
#define SYM_SETUP_SCSI_DIFF (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* IRQ mode.
|
||||
*/
|
||||
#define SYMSETUP_IRQ_MODE (0)
|
||||
#define SYM_SETUP_IRQ_MODE (0)
|
||||
|
||||
/*
|
||||
* Check SCSI BUS signal on reset.
|
||||
*/
|
||||
#define SYMSETUP_SCSI_BUS_CHECK (1)
|
||||
#define SYM_SETUP_SCSI_BUS_CHECK (1)
|
||||
|
||||
/*
|
||||
* Max burst for PCI (1<<value)
|
||||
* 7 means: (1<<7) = 128 DWORDS.
|
||||
*/
|
||||
#define SYMSETUP_BURST_ORDER (7)
|
||||
#define SYM_SETUP_BURST_ORDER (7)
|
||||
|
||||
/*
|
||||
* Only relevant if IARB support configured.
|
||||
* - Max number of successive settings of IARB hints.
|
||||
* - Set IARB on arbitration lost.
|
||||
*/
|
||||
#define SYMCONF_IARB_MAX 3
|
||||
#define SYMCONF_SET_IARB_ON_ARB_LOST 1
|
||||
#define SYM_CONF_IARB_MAX 3
|
||||
#define SYM_CONF_SET_IARB_ON_ARB_LOST 1
|
||||
|
||||
/*
|
||||
* Returning wrong residuals may make problems.
|
||||
@ -223,6 +264,44 @@
|
||||
* always return 0 as transfer residual.
|
||||
* Btw, all my testings of residuals have succeeded.
|
||||
*/
|
||||
#define SYMCONF_RESIDUAL_SUPPORT 1
|
||||
#define SYM_CONF_RESIDUAL_SUPPORT 1
|
||||
|
||||
/*
|
||||
* Supported maximum number of LUNs to announce to
|
||||
* the access method.
|
||||
* The driver supports up to 64 LUNs per target as
|
||||
* required by SPI-2/SPI-3. However some SCSI devices
|
||||
* designed prior to these specifications or not being
|
||||
* conformant may be highly confused when they are
|
||||
* asked about a LUN > 7.
|
||||
*/
|
||||
#ifndef SYM_SETUP_MAX_LUN
|
||||
#define SYM_SETUP_MAX_LUN (8)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Low priority probe map.
|
||||
*
|
||||
* This option is used as a bitmap to tell the driver
|
||||
* about chips that are to be claimed with a low priority
|
||||
* (-2000) by the probe method. This allows any other driver
|
||||
* that may return some higher priority value for the same
|
||||
* chips to take precedence over this driver (sym).
|
||||
* This option may be used when both the ncr driver and this
|
||||
* driver are configured.
|
||||
*
|
||||
* Bits are to be coded as follows:
|
||||
* 1 -> 810a, 860
|
||||
* 2 -> 825a, 875, 885, 895
|
||||
* 4 -> 895a, 896, 1510d
|
||||
* 8 -> 1010
|
||||
*
|
||||
* For example, value 5 tells the driver to claim support
|
||||
* for 810a, 860, 895a, 896 and 1510d with low priority,
|
||||
* allowing the ncr driver to take precedence if configured.
|
||||
*/
|
||||
#ifndef SYM_SETUP_LP_PROBE_MAP
|
||||
#define SYM_SETUP_LP_PROBE_MAP 0
|
||||
#endif
|
||||
|
||||
#endif /* SYM_CONF_H */
|
||||
|
@ -91,6 +91,7 @@ struct sym_pci_chip {
|
||||
u_char burst_max; /* log-base-2 of max burst */
|
||||
u_char offset_max;
|
||||
u_char nr_divisor;
|
||||
u_char lp_probe_bit;
|
||||
u_int features;
|
||||
#define FE_LED0 (1<<0)
|
||||
#define FE_WIDE (1<<1) /* Wide data transfers */
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user