Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bb7b604 authored by San Mehat's avatar San Mehat Committed by Dmitry Shmidt
Browse files

ANDROID: mmc: sd: Add new CONFIG_MMC_PARANOID_SD_INIT for enabling retries during SD detection



Change-Id: I4e6b9d9a3600d7efbee1d8379e45db11c57827f2
Signed-off-by: default avatarSan Mehat <san@google.com>
parent 40203781
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -22,3 +22,11 @@ config PWRSEQ_SIMPLE

	  This driver can also be built as a module. If so, the module
	  will be called pwrseq_simple.

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.
+22 −0
Original line number Diff line number Diff line
@@ -839,6 +839,9 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
	bool reinit)
{
	int err;
#ifdef CONFIG_MMC_PARANOID_SD_INIT
	int retries;
#endif

	if (!reinit) {
		/*
@@ -865,7 +868,26 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
		/*
		 * Fetch switch information from card.
		 */
#ifdef CONFIG_MMC_PARANOID_SD_INIT
		for (retries = 1; retries <= 3; retries++) {
			err = mmc_read_switch(card);
			if (!err) {
				if (retries > 1) {
					printk(KERN_WARNING
					       "%s: recovered\n",
					       mmc_hostname(host));
				}
				break;
			} else {
				printk(KERN_WARNING
				       "%s: read switch failed (attempt %d)\n",
				       mmc_hostname(host), retries);
			}
		}
#else
		err = mmc_read_switch(card);
#endif

		if (err)
			return err;
	}