
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
	  LSISAS1068
	  LSISAS1064E
	  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
