# 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.
