# SPDX-License-Identifier: GPL-2.0-only
config SCSI_QLA_FC
	tristate "QLogic QLA2XXX Fibre Channel Support"
	depends on PCI && HAS_IOPORT && SCSI
	depends on SCSI_FC_ATTRS
	depends on NVME_FC || !NVME_FC
	select FW_LOADER
	select BTREE
	help
	This qla2xxx driver supports all QLogic Fibre Channel
	PCI and PCIe host adapters.

	By default, firmware for the ISP parts will be loaded
	via the Firmware Loader interface.

	ISP               Firmware Filename
	----------        -----------------
	21xx              ql2100_fw.bin
	22xx              ql2200_fw.bin
	2300, 2312, 6312  ql2300_fw.bin
	2322, 6322        ql2322_fw.bin
	24xx, 54xx        ql2400_fw.bin
	25xx              ql2500_fw.bin

	Upon request, the driver caches the firmware image until
	the driver is unloaded.

	Firmware images can be retrieved from:

		http://ldriver.qlogic.com/firmware/

	They are also included in the linux-firmware tree as well.

config TCM_QLA2XXX
	tristate "TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs"
	depends on SCSI_QLA_FC && TARGET_CORE
	depends on LIBFC
	select BTREE
	default n
	help
	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs

if TCM_QLA2XXX
config TCM_QLA2XXX_DEBUG
	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
	default n
	help
	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
	This will include code to enable the SCSI command jammer
endif
