
menu "Fusion MPT device support"

config FUSION
	bool
	default n

config FUSION_SPI
	tristate "Fusion MPT ScsiHost drivers for SPI"
	depends on PCI && SCSI
	select FUSION
	select SCSI_SPI_ATTRS
	---help---
	  SCSI HOST support for a parallel SCSI host adapters.

	  List of supported controllers:

	  LSI53C1020
	  LSI53C1020A
	  LSI53C1030
	  LSI53C1035

config FUSION_FC
	tristate "Fusion MPT ScsiHost drivers for FC"
	depends on PCI && SCSI
	select FUSION
	select SCSI_FC_ATTRS
	---help---
	  SCSI HOST support for a Fiber Channel host adapters.

	  List of supported controllers:

	  LSIFC909
	  LSIFC919
	  LSIFC919X
	  LSIFC929
	  LSIFC929X
	  LSIFC929XL

config FUSION_SAS
	tristate "Fusion MPT ScsiHost drivers for SAS"
	depends on PCI && SCSI
 	select FUSION
	select SCSI_SAS_ATTRS
	---help---
	  SCSI HOST support for a SAS host adapters.

	  List of supported controllers:

	  LSISAS1064
	  LSISAS1066
	  LSISAS1068
	  LSISAS1064E
	  LSISAS1066E
	  LSISAS1068E

config FUSION_MAX_SGE
	int "Maximum number of scatter gather entries (16 - 128)"
	depends on FUSION
	default "128"
	range 16 128
	help
	  This option allows you to specify the maximum number of scatter-
	  gather entries per I/O. The driver default is 128, which matches
	  SCSI_MAX_PHYS_SEGMENTS. However, it may decreased down to 16.
	  Decreasing this parameter will reduce memory requirements
	  on a per controller instance.

config FUSION_CTL
	tristate "Fusion MPT misc device (ioctl) driver"
	depends on FUSION_SPI || FUSION_FC
	---help---
	  The Fusion MPT misc device driver provides specialized control
	  of MPT adapters via system ioctl calls.  Use of ioctl calls to
	  the MPT driver requires that you create and use a misc device
	  node ala:
	  mknod /dev/mptctl c 10 240

	  One use of this ioctl interface is to perform an upgrade (reflash)
	  of the MPT adapter firmware.  Refer to readme file(s) distributed
	  with the Fusion MPT linux driver for additional details.

	  If enabled by saying M to this, a driver named: mptctl
	  will be compiled.

	  If unsure whether you really want or need this, say N.

config FUSION_LAN
	tristate "Fusion MPT LAN driver"
	depends on FUSION_FC && NET_FC
	---help---
	  This module supports LAN IP traffic over Fibre Channel port(s)
	  on Fusion MPT compatible hardware (LSIFC9xx chips).
	  The physical interface used is defined in RFC 2625.
	  Please refer to that document for details.

	  Installing this driver requires the knowledge to configure and
	  activate a new network interface, "fc0", using standard Linux tools.

	  If enabled by saying M to this, a driver named: mptlan
	  will be compiled.

	  If unsure whether you really want or need this, say N.

endmenu
