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