# SPDX-License-Identifier: GPL-2.0-only
#
# PCMCIA SCSI adapter configuration
#

menuconfig SCSI_LOWLEVEL_PCMCIA
	bool "PCMCIA SCSI adapter support"
	depends on SCSI!=n && PCMCIA!=n

# drivers have problems when build in, so require modules
if SCSI_LOWLEVEL_PCMCIA && SCSI && PCMCIA && m

config PCMCIA_AHA152X
	tristate "Adaptec AHA152X PCMCIA support"
	depends on HAS_IOPORT
	select SCSI_SPI_ATTRS
	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 HAS_IOPORT
	select SCSI_FDOMAIN
	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 (!64BIT || COMPILE_TEST) && HAS_IOPORT
	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.rst>.

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

endif # SCSI_LOWLEVEL_PCMCIA
