#
# PCMCIA SCSI adapter configuration
#

menu "PCMCIA SCSI adapter support"
	depends on SCSI!=n && PCMCIA!=n && MODULES

config PCMCIA_AHA152X
	tristate "Adaptec AHA152X PCMCIA support"
	depends on m && !64BIT
	help
	  Say Y here if you intend to attach this type of PCMCIA SCSI host
	  adapter to your computer.

	  To compile this driver as a module, choose M here: the
	  module will be called aha152x_cs.

config PCMCIA_FDOMAIN
	tristate "Future Domain PCMCIA support"
	depends on m
	help
	  Say Y here if you intend to attach this type of PCMCIA SCSI host
	  adapter to your computer.

	  To compile this driver as a module, choose M here: the
	  module will be called fdomain_cs.

config PCMCIA_NINJA_SCSI
	tristate "NinjaSCSI-3 / NinjaSCSI-32Bi (16bit) PCMCIA support"
	depends on m && !64BIT
	help
	  If you intend to attach this type of PCMCIA SCSI host adapter to
	  your computer, say Y here and read
	  <file:Documentation/scsi/NinjaSCSI.txt>.

	  Supported cards:

	  NinjaSCSI-3: (version string: "WBT","NinjaSCSI-3","R1.0")
	    IO-DATA     PCSC-FP
	    ALPHA DATA  AD-PCS201
	    CyQ've      SFC-201  
	    LOGITECH    LPM-SCSI2E
	    Pioneer PCR-PR24's card
	    I-O DATA CDPS-PX24's card (PCSC-F)
	    Panasonic KXL-RW10AN CD-RW's card
	    etc.

	  NinjaSCSI-32Bit (in 16bit mode):
	    [Workbit (version string: "WORKBIT","UltraNinja-16","1")]
	    Jazz SCP050
	    [I-O DATA (OEM) (version string: "IO DATA","CBSC16       ","1")]
	    I-O DATA CBSC-II
	    [Kyusyu Matsushita Kotobuki (OEM)
               (version string: "KME    ","SCSI-CARD-001","1")]
	    KME KXL-820AN's card
	    HP M820e CDRW's card
	    etc.

	  To compile this driver as a module, choose M here: the
	  module will be called nsp_cs.

config PCMCIA_QLOGIC
	tristate "Qlogic PCMCIA support"
	depends on m
	help
	  Say Y here if you intend to attach this type of PCMCIA SCSI host
	  adapter to your computer.

	  To compile this driver as a module, choose M here: the
	  module will be called qlogic_cs.

config PCMCIA_SYM53C500
	tristate "Symbios 53c500 PCMCIA support"
	depends on m
	help
	  Say Y here if you have a New Media Bus Toaster or other PCMCIA
	  SCSI adapter based on the Symbios 53c500 controller.

	  To compile this driver as a module, choose M here: the
	  module will be called sym53c500_cs.

endmenu
