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

Commit ff172d75 authored by San Mehat's avatar San Mehat Committed by Amit Pundir
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 8392add7
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -80,3 +80,10 @@ config MMC_TEST
	  This driver is only of interest to those developing or
	  testing a host driver. Most people should say N here.

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
@@ -834,6 +834,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) {
		/*
@@ -860,7 +863,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;
	}