#
# AIC79XX 2.5.X Kernel configuration File.
# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Kconfig.aic79xx#4 $
#
config SCSI_AIC79XX
	tristate "Adaptec AIC79xx U320 support"
	depends on PCI && SCSI
	select SCSI_SPI_ATTRS
	help
	This driver supports all of Adaptec's Ultra 320 PCI-X
	based SCSI controllers.

config AIC79XX_CMDS_PER_DEVICE
	int "Maximum number of TCQ commands per device"
	depends on SCSI_AIC79XX
	default "32"
	---help---
	Specify the number of commands you would like to allocate per SCSI
	device when Tagged Command Queueing (TCQ) is enabled on that device.

	This is an upper bound value for the number of tagged transactions
	to be used for any device.  The aic7xxx driver will automatically
	vary this number based on device behavior.  For devices with a
	fixed maximum, the driver will eventually lock to this maximum
	and display a console message inidicating this value.

	Due to resource allocation issues in the Linux SCSI mid-layer, using
	a high number of commands per device may result in memory allocation
	failures when many devices are attached to the system.  For this reason,
	the default is set to 32.  Higher values may result in higer performance
	on some devices.  The upper bound is 253.  0 disables tagged queueing.

	Per device tag depth can be controlled via the kernel command line
	"tag_info" option.  See drivers/scsi/aic7xxx/README.aic79xx
	for details.

config AIC79XX_RESET_DELAY_MS
	int "Initial bus reset delay in milli-seconds"
	depends on SCSI_AIC79XX
	default "15000"
	---help---
	The number of milliseconds to delay after an initial bus reset.
	The bus settle delay following all error recovery actions is
	dictated by the SCSI layer and is not affected by this value.

	Default: 15000 (15 seconds)

config AIC79XX_BUILD_FIRMWARE
	bool "Build Adapter Firmware with Kernel Build"
	depends on SCSI_AIC79XX && !PREVENT_FIRMWARE_BUILD
	help
	This option should only be enabled if you are modifying the firmware
	source to the aic79xx driver and wish to have the generated firmware
	include files updated during a normal kernel build.  The assembler
	for the firmware requires lex and yacc or their equivalents, as well
	as the db v1 library.  You may have to install additional packages
	or modify the assembler Makefile or the files it includes if your
	build environment is different than that of the author.

config AIC79XX_ENABLE_RD_STRM
	bool "Enable Read Streaming for All Targets"
	depends on SCSI_AIC79XX
	default n
	help
	Read Streaming is a U320 protocol option that should enhance
	performance.  Early U320 drive firmware actually performs slower
	with read streaming enabled so it is disabled by default.  Read
	Streaming can be configured in much the same way as tagged queueing
	using the "rd_strm" command line option.  See
	drivers/scsi/aic7xxx/README.aic79xx for details.

config AIC79XX_DEBUG_ENABLE
	bool "Compile in Debugging Code"
	depends on SCSI_AIC79XX
	default y
	help
	Compile in aic79xx debugging code that can be useful in diagnosing
	driver errors.

config AIC79XX_DEBUG_MASK
	int "Debug code enable mask (16383 for all debugging)"
	depends on SCSI_AIC79XX
	default "0"
	help
	Bit mask of debug options that is only valid if the
	CONFIG_AIC79XX_DEBUG_ENBLE option is enabled.  The bits in this mask
	are defined in the drivers/scsi/aic7xxx/aic79xx.h - search for the
	variable ahd_debug in that file to find them.

config AIC79XX_REG_PRETTY_PRINT
	bool "Decode registers during diagnostics"
	depends on SCSI_AIC79XX
	default y
	help
	Compile in register value tables for the output of expanded register
	contents in diagnostics.  This make it much easier to understand debug
	output without having to refer to a data book and/or the aic7xxx.reg
	file.
