* 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:
obrien 1999-12-16 17:00:53 +00:00
parent 32632bcb71
commit 4daec0d51e
3 changed files with 311 additions and 229 deletions

View File

@ -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 */

View File

@ -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