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

Commit 8363c374 authored by Kevin Liu's avatar Kevin Liu Committed by Chris Ball
Browse files

mmc: sdhci: Balance vmmc regulator_enable(), and always enable vqmmc



The vmmc regulator enable in sdhci_add_host is NOT necessary since
it can be enabled during mmc_power_up by function mmc_regulator_set_ocr.
And this extra enable will make regulator_enable/regulator_disable
unbalanced. Consequently, vmmc can't be disabled during mmc_power_off.

Also, if the vqmmc regulator exists, it should be enabled regardless it
support 1.8v or not.

Signed-off-by: default avatarKevin Liu <kliu5@marvell.com>
Signed-off-by: default avatarPhilip Rakity <prakity@marvell.com>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 91ab252a
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -2858,12 +2858,14 @@ int sdhci_add_host(struct sdhci_host *host)
				mmc_hostname(mmc));
			host->vqmmc = NULL;
		}
	}
	else if (regulator_is_supported_voltage(host->vqmmc, 1800000, 1800000))
	} else {
		regulator_enable(host->vqmmc);
	else
		caps[1] &= ~(SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 |
		if (!regulator_is_supported_voltage(host->vqmmc, 1800000,
			1800000))
			caps[1] &= ~(SDHCI_SUPPORT_SDR104 |
					SDHCI_SUPPORT_SDR50 |
					SDHCI_SUPPORT_DDR50);
	}

	/* Any UHS-I mode in caps implies SDR12 and SDR25 support. */
	if (caps[1] & (SDHCI_SUPPORT_SDR104 | SDHCI_SUPPORT_SDR50 |
@@ -2919,8 +2921,7 @@ int sdhci_add_host(struct sdhci_host *host)
				mmc_hostname(mmc));
			host->vmmc = NULL;
		}
	} else
		regulator_enable(host->vmmc);
	}

#ifdef CONFIG_REGULATOR
	if (host->vmmc) {