#
# AIC7XXX and AIC79XX 2.5.X Kernel configuration File.
# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Kconfig.aic7xxx#7 $
#
config SCSI_AIC7XXX
	tristate "Adaptec AIC7xxx Fast -> U160 support (New Driver)"
	depends on (PCI || EISA) && SCSI
	select SCSI_SPI_ATTRS
	---help---
	This driver supports all of Adaptec's Fast through Ultra 160 PCI
	based SCSI controllers as well as the aic7770 based EISA and VLB
	SCSI controllers (the 274x and 284x series).  For AAA and ARO based
	configurations, only SCSI functionality is provided.

	To compile this driver as a module, choose M here: the
	module will be called aic7xxx.

config AIC7XXX_CMDS_PER_DEVICE
	int "Maximum number of TCQ commands per device"
	depends on SCSI_AIC7XXX
	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 indicating 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 higher 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 Documentation/scsi/aic7xxx.txt for details.

config AIC7XXX_RESET_DELAY_MS
	int "Initial bus reset delay in milli-seconds"
	depends on SCSI_AIC7XXX
	default "5000"
	---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: 5000 (5 seconds)

config AIC7XXX_BUILD_FIRMWARE
	bool "Build Adapter Firmware with Kernel Build"
	depends on SCSI_AIC7XXX && !PREVENT_FIRMWARE_BUILD
	help
	This option should only be enabled if you are modifying the firmware
	source to the aic7xxx 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 AIC7XXX_DEBUG_ENABLE
	bool "Compile in Debugging Code"
	depends on SCSI_AIC7XXX
	default y
	help
	Compile in aic7xxx debugging code that can be useful in diagnosing
	driver errors.

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

config AIC7XXX_REG_PRETTY_PRINT
        bool "Decode registers during diagnostics"
        depends on SCSI_AIC7XXX
	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.
