# SPDX-License-Identifier: GPL-2.0-only
#
# 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 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/aic79xx.rst for details.

config AIC79XX_RESET_DELAY_MS
	int "Initial bus reset delay in milli-seconds"
	depends on SCSI_AIC79XX
	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 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_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_ENABLE 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.
