config AHCI
	bool "Support SATA controllers with driver model"
	depends on DM
	help
	  This enables a uclass for disk controllers in U-Boot. Various driver
	  types can use this, such as AHCI/SATA. It does not provide any standard
	  operations at present. The block device interface has not been converted
	  to driver model.

config SATA
	bool "Support SATA controllers"
	depends on BLK
	select HAVE_BLOCK_DEVICE
	help
	  This enables support for SATA (Serial Advanced Technology
	  Attachment), a serial bus standard for connecting to hard drives and
	  other storage devices.

	  SATA replaces PATA (originally just ATA), which stands for Parallel AT
	  Attachment, where AT refers to an IBM AT (Advanced Technology)
	  computer released in 1984.

	  See also CMD_SATA which provides command-line support.

config LIBATA
	bool
	help
	  Select this to build and link the libata helper functions.

config SCSI_AHCI
	bool "Enable SCSI interface to SATA devices"
	select LIBATA
	help
	  Enable this to allow interfacing SATA devices via the SCSI layer.

menu "SATA/SCSI device support"

config AHCI_PCI
	bool "Support for PCI-based AHCI controller"
	depends on PCI
	depends on DM_SCSI
	help
	  Enables support for the PCI-based AHCI controller.

if AHCI

config SPL_AHCI_PCI
	bool "Support for PCI-based AHCI controller for SPL"
	depends on SPL
	depends on SPL_PCI
	depends on SPL_SATA_SUPPORT && DM_SCSI

config DWC_AHCI
	bool "Enable Synopsys DWC AHCI driver support"
	select SCSI_AHCI
	select PHY
	depends on DM_SCSI
	help
	  Enable this driver to support Sata devices through
	  Synopsys DWC AHCI module.

config DWC_AHSATA
	bool "Enable DWC AHSATA driver support"
	select LIBATA
	depends on BLK
	help
	  Enable this driver to support the DWC AHSATA SATA controller found
	  in i.MX5 and i.MX6 SoCs.

config DWC_AHSATA_AHCI
	bool "Enable DWC AHSATA AHCI driver support"
	depends on DWC_AHSATA
	default y
	help
	  Enable this option unless you need your private ahci implementation

config MTK_AHCI
	bool "Enable Mediatek AHCI driver support"
	help
	  Enable this driver to support Sata devices through
	  Mediatek AHCI controller (e.g. MT7622).

config AHCI_MVEBU
	bool "Marvell EBU AHCI SATA support"
	depends on ARCH_MVEBU || ARCH_OCTEON
	select SCSI_AHCI
	select DM_SCSI
	help
	  This option enables support for the Marvell EBU SoC's
	  onboard AHCI SATA.

	  If unsure, say N.

config SUNXI_AHCI
	bool "Enable Allwinner SATA driver support"
	default y if ARCH_SUNXI
	help
	  Enable this driver to support the SATA controllers found in the
	  Allwinner A10, A20 and R40 SoCs.

endif # AHCI

if SATA

config SATA_CEVA
	bool "Ceva Sata controller"
	depends on AHCI
	depends on DM_SCSI
	help
	  This option enables Ceva Sata controller hard IP available on Xilinx
	  ZynqMP. Support up to 2 external devices. Compliant with SATA 3.1 and
	  AHCI 1.3 specifications with hot-plug detect feature.

config FSL_SATA
	bool "Enable Freescale SATA controller driver support"
	depends on PPC
	select AHCI
	select LIBATA
	help
	  Enable this driver to support the SATA controller found in
	  some Freescale PowerPC SoCs.

config FSL_SATA_V2
	bool "Enable support for V2 of the Freescale SATA controller"
	depends on FSL_SATA
	help
	  Enable support for V2 of this controller, rather than V1.

config SATA_MV
	bool "Enable Marvell SATA controller driver support"
	select AHCI
	select LIBATA
	help
	  Enable this driver to support the SATA controller found in
	  some Marvell SoCs.

config SATA_SIL
	bool "Enable Silicon Image SIL3131 / SIL3132 / SIL3124 SATA driver support"
	select AHCI
	select LIBATA
	help
	  Enable this driver to support the SIL3131, SIL3132 and SIL3124
	  SATA controllers.

config SYS_SATA_MAX_DEVICE
	int "Maximum number of SATA devices"
	depends on !AHCI || FSL_SATA || SATA_MV
	help
	  Sets the maximum number of SATA devices which can be supported
	  by U-Boot.

	  This is only partially converted to driver model. See sata_bread()
	  for example, which shows where the conversion needs to be completed.

endif # SATA

endmenu
