# SPDX-License-Identifier: GPL-2.0-only
#
# 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"
	depends on (PCI || EISA) && HAS_IOPORT && 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.rst 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.
