#
# SATA/PATA driver configuration
#

menu "Serial ATA (prod) and Parallel ATA (experimental) drivers"

config ATA
	tristate "ATA device support"
	select SCSI
	---help---
	  If you want to use a ATA hard disk, ATA tape drive, ATA CD-ROM or
	  any other ATA device under Linux, say Y and make sure that you know
	  the name of your ATA host adapter (the card inside your computer
	  that "speaks" the ATA protocol, also called ATA controller),
	  because you will be asked for it.

if ATA

config SATA_AHCI
	tristate "AHCI SATA support"
	depends on PCI
	help
	  This option enables support for AHCI Serial ATA.

	  If unsure, say N.

config SATA_SVW
	tristate "ServerWorks Frodo / Apple K2 SATA support"
	depends on PCI
	help
	  This option enables support for Broadcom/Serverworks/Apple K2
	  SATA support.

	  If unsure, say N.

config ATA_PIIX
	tristate "Intel PIIX/ICH SATA support"
	depends on PCI
	help
	  This option enables support for ICH5/6/7/8 Serial ATA.
	  If PATA support was enabled previously, this enables
	  support for select Intel PIIX/ICH PATA host controllers.

	  If unsure, say N.

config SATA_MV
	tristate "Marvell SATA support (HIGHLY EXPERIMENTAL)"
	depends on PCI && EXPERIMENTAL
	help
	  This option enables support for the Marvell Serial ATA family.
	  Currently supports 88SX[56]0[48][01] chips.

	  If unsure, say N.

config SATA_NV
	tristate "NVIDIA SATA support"
	depends on PCI
	help
	  This option enables support for NVIDIA Serial ATA.

	  If unsure, say N.

config PDC_ADMA
	tristate "Pacific Digital ADMA support"
	depends on PCI
	help
	  This option enables support for Pacific Digital ADMA controllers

	  If unsure, say N.

config SATA_QSTOR
	tristate "Pacific Digital SATA QStor support"
	depends on PCI
	help
	  This option enables support for Pacific Digital Serial ATA QStor.

	  If unsure, say N.

config SATA_PROMISE
	tristate "Promise SATA TX2/TX4 support"
	depends on PCI
	help
	  This option enables support for Promise Serial ATA TX2/TX4.

	  If unsure, say N.

config SATA_SX4
	tristate "Promise SATA SX4 support"
	depends on PCI && EXPERIMENTAL
	help
	  This option enables support for Promise Serial ATA SX4.

	  If unsure, say N.

config SATA_SIL
	tristate "Silicon Image SATA support"
	depends on PCI
	help
	  This option enables support for Silicon Image Serial ATA.

	  If unsure, say N.

config SATA_SIL24
	tristate "Silicon Image 3124/3132 SATA support"
	depends on PCI
	help
	  This option enables support for Silicon Image 3124/3132 Serial ATA.

	  If unsure, say N.

config SATA_SIS
	tristate "SiS 964/180 SATA support"
	depends on PCI
	help
	  This option enables support for SiS Serial ATA 964/180.

	  If unsure, say N.

config SATA_ULI
	tristate "ULi Electronics SATA support"
	depends on PCI
	help
	  This option enables support for ULi Electronics SATA.

	  If unsure, say N.

config SATA_VIA
	tristate "VIA SATA support"
	depends on PCI
	help
	  This option enables support for VIA Serial ATA.

	  If unsure, say N.

config SATA_VITESSE
	tristate "VITESSE VSC-7174 / INTEL 31244 SATA support"
	depends on PCI
	help
	  This option enables support for Vitesse VSC7174 and Intel 31244 Serial ATA.

	  If unsure, say N.

config SATA_INTEL_COMBINED
	bool
	depends on IDE=y && !BLK_DEV_IDE_SATA && (SATA_AHCI || ATA_PIIX)
	default y

endif
endmenu

