#
# SCSI driver configuration for Acorn
#
config SCSI_ACORNSCSI_3
	tristate "Acorn SCSI card (aka30) support"
	depends on ARCH_ACORN && SCSI
	select SCSI_SPI_ATTRS
	help
	  This enables support for the Acorn SCSI card (aka30). If you have an
	  Acorn system with one of these, say Y. If unsure, say N.

config SCSI_ACORNSCSI_TAGGED_QUEUE
	bool "Support SCSI 2 Tagged queueing"
	depends on SCSI_ACORNSCSI_3
	help
	  Say Y here to enable tagged queuing support on the Acorn SCSI card.

	  This is a feature of SCSI-2 which improves performance: the host
	  adapter can send several SCSI commands to a device's queue even if
	  previous commands haven't finished yet. Some SCSI devices don't
	  implement this properly, so the safe answer is N.

config SCSI_ACORNSCSI_SYNC
	bool "Support SCSI 2 Synchronous Transfers"
	depends on SCSI_ACORNSCSI_3
	help
	  Say Y here to enable synchronous transfer negotiation with all
	  targets on the Acorn SCSI card.

	  In general, this improves performance; however some SCSI devices
	  don't implement it properly, so the safe answer is N.

config SCSI_ARXESCSI
	tristate "ARXE SCSI support"
	depends on ARCH_ACORN && SCSI
	help
	  Around 1991, Arxe Systems Limited released a high density floppy
	  disc interface for the Acorn Archimedes range, to allow the use of
	  HD discs from the then new A5000 on earlier models. This interface
	  was either sold on its own or with an integral SCSI controller.
	  Technical details on this NCR53c94-based device are available at
	  <http://www.cryton.demon.co.uk/acornbits/scsi_arxe.html>
	  Say Y here to compile in support for the SCSI controller.

config SCSI_CUMANA_2
	tristate "CumanaSCSI II support"
	depends on ARCH_ACORN && SCSI
	help
	  This enables support for the Cumana SCSI II card. If you have an
	  Acorn system with one of these, say Y. If unsure, say N.

config SCSI_EESOXSCSI
	tristate "EESOX support"
	depends on ARCH_ACORN && SCSI
	help
	  This enables support for the EESOX SCSI card. If you have an Acorn
	  system with one of these, say Y, otherwise say N.

config SCSI_POWERTECSCSI
	tristate "PowerTec support"
	depends on ARCH_ACORN && SCSI
	help
	  This enables support for the Powertec SCSI card on Acorn systems. If
	  you have one of these, say Y. If unsure, say N.

comment "The following drivers are not fully supported"
	depends on ARCH_ACORN

config SCSI_CUMANA_1
	tristate "CumanaSCSI I support"
	depends on ARCH_ACORN && SCSI
	select SCSI_SPI_ATTRS
	help
	  This enables support for the Cumana SCSI I card. If you have an
	  Acorn system with one of these, say Y. If unsure, say N.

config SCSI_OAK1
	tristate "Oak SCSI support"
	depends on ARCH_ACORN && SCSI
	select SCSI_SPI_ATTRS
	help
	  This enables support for the Oak SCSI card. If you have an Acorn
	  system with one of these, say Y. If unsure, say N.

