menu "MMC Host controller Support"

config MMC
	bool "Enable MMC support"
	depends on ARCH_SUNXI || SANDBOX
	help
	  TODO: Move all architectures to use this option

config DM_MMC
	bool "Enable MMC controllers using Driver Model"
	depends on DM
	help
	  This enables the MultiMediaCard (MMC) uclass which supports MMC and
	  Secure Digital I/O (SDIO) cards. Both removable (SD, micro-SD, etc.)
	  and non-removable (e.g. eMMC chip) devices are supported. These
	  appear as block devices in U-Boot and can support filesystems such
	  as EXT4 and FAT.

config DM_MMC_OPS
	bool "Support MMC controller operations using Driver Model"
	depends on DM_MMC
	default y if DM_MMC
	help
	  Driver model provides a means of supporting device operations. This
	  option moves MMC operations under the control of driver model. The
	  option will be removed as soon as all DM_MMC drivers use it, as it
	  will the only supported behaviour.

config SPL_MMC_TINY
	bool "Tiny MMC framework in SPL"
	help
	  Enable MMC framework tinification support. This option is useful if
	  if your SPL is extremely size constrained. Heed the warning, enable
	  this option if and only if you know exactly what you are doing, if
	  you are reading this help text, you most likely have no idea :-)

	  The MMC framework is reduced to bare minimum to be useful. No malloc
	  support is needed for the MMC framework operation with this option
	  enabled. The framework supports exactly one MMC device and exactly
	  one MMC driver. The MMC driver can be adjusted to avoid any malloc
	  operations too, which can remove the need for malloc support in SPL
	  and thus further reduce footprint.

config MSM_SDHCI
	bool "Qualcomm SDHCI controller"
	depends on DM_MMC && BLK && DM_MMC_OPS
	help
	  Enables support for SDHCI 2.0 controller present on some Qualcomm
          Snapdragon devices. This device is compatible with eMMC v4.5 and
          SD 3.0 specifications. Both SD and eMMC devices are supported.
	  Card-detect gpios are not supported.

config ATMEL_SDHCI
	bool "Atmel SDHCI controller support"
	depends on DM_MMC && BLK && DM_MMC_OPS && ARCH_AT91
	help
	  This enables support for the Atmel SDHCI controller, which supports
	  the embedded MultiMedia Card (e.MMC) Specification V4.51, the SD
	  Memory Card Specification V3.0, and the SDIO V3.0 specification.
	  It is compliant with the SD Host Controller Standard V3.0
	  specification.

config ROCKCHIP_DWMMC
	bool "Rockchip SD/MMC controller support"
	depends on DM_MMC && OF_CONTROL
	help
	  This enables support for the Rockchip SD/MMM controller, which is
	  based on Designware IP. The device is compatible with at least
	  SD 3.0, SDIO 3.0 and MMC 4.5 and supports common eMMC chips as well
	  as removeable SD and micro-SD cards.

config SH_SDHI
	bool "SuperH/Renesas ARM SoCs on-chip SDHI host controller support"
	depends on RMOBILE
	help
	  Support for the on-chip SDHI host controller on SuperH/Renesas ARM SoCs platform

config PIC32_SDHCI
	bool "Microchip PIC32 on-chip SDHCI support"
	depends on DM_MMC && MACH_PIC32
	help
	  Support for Microchip PIC32 SDHCI controller.

config ZYNQ_SDHCI
	bool "Arasan SDHCI controller support"
	depends on DM_MMC && OF_CONTROL
	help
	  Support for Arasan SDHCI host controller on Zynq/ZynqMP ARM SoCs platform

config ROCKCHIP_SDHCI
	bool "Arasan SDHCI controller for Rockchip support"
	depends on DM_MMC && BLK && DM_MMC_OPS
	help
	  Support for Arasan SDHCI host controller on Rockchip ARM SoCs platform

config MMC_UNIPHIER
	bool "UniPhier SD/MMC Host Controller support"
	depends on ARCH_UNIPHIER
	depends on BLK
	select DM_MMC_OPS
	help
	  This selects support for the SD/MMC Host Controller on UniPhier SoCs.

config SANDBOX_MMC
	bool "Sandbox MMC support"
	depends on MMC && SANDBOX
	help
	  This select a dummy sandbox MMC driver. At present this does nothing
	  other than allow sandbox to be build with MMC support. This
	  improves build coverage for sandbox and makes it easier to detect
	  MMC build errors with sandbox.

endmenu
