#
# MMC core configuration
#

config MMC_UNSAFE_RESUME
	bool "Assume MMC/SD cards are non-removable (DANGEROUS)"
	help
	  If you say Y here, the MMC layer will assume that all cards
	  stayed in their respective slots during the suspend. The
	  normal behaviour is to remove them at suspend and
	  redetecting them at resume. Breaking this assumption will
	  in most cases result in data corruption.

	  This option is usually just for embedded systems which use
	  a MMC/SD card for rootfs. Most people should say N here.

	  This option sets a default which can be overridden by the
	  module parameter "removable=0" or "removable=1".

config MMC_CLKGATE
	bool "MMC host clock gating (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	help
	  This will attempt to aggressively gate the clock to the MMC card.
	  This is done to save power due to gating off the logic and bus
	  noise when the MMC card is not in use. Your host driver has to
	  support handling this in order for it to be of any use.

	  If unsure, say N.

config MMC_EMBEDDED_SDIO
	boolean "MMC embedded SDIO device support (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	help
	  If you say Y here, support will be added for embedded SDIO
	  devices which do not contain the necessary enumeration
	  support in hardware to be properly detected.

config MMC_PARANOID_SD_INIT
	bool "Enable paranoid SD card initialization (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	help
	  If you say Y here, the MMC layer will be extra paranoid
	  about re-trying SD init requests. This can be a useful
	  work-around for buggy controllers and hardware. Enable
	  if you are experiencing issues with SD detection.
