#
# 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"
	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)"
	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)"
	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.
