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

Commit 38cfc2f7 authored by Philip Rakity's avatar Philip Rakity Committed by Chris Ball
Browse files

mmc: sdhci: When a UHS switch fails, cycle power if regulator is used



Power needs to be removed from the card when switching to 1.8v fails.

If a regulator is used to control vmmc we need to turn the
regulator off and then back on otherwise power will not be
removed from the card.

Signed-off-by: default avatarPhilip Rakity <prakity@marvell.com>
Reviewed-by: default avatarAaron Lu <aaron.lu@amd.com>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 8a4de07e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1682,11 +1682,15 @@ static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host,
		pwr = sdhci_readb(host, SDHCI_POWER_CONTROL);
		pwr &= ~SDHCI_POWER_ON;
		sdhci_writeb(host, pwr, SDHCI_POWER_CONTROL);
		if (host->vmmc)
			regulator_disable(host->vmmc);

		/* Wait for 1ms as per the spec */
		usleep_range(1000, 1500);
		pwr |= SDHCI_POWER_ON;
		sdhci_writeb(host, pwr, SDHCI_POWER_CONTROL);
		if (host->vmmc)
			regulator_enable(host->vmmc);

		pr_info(DRIVER_NAME ": Switching to 1.8V signalling "
			"voltage failed, retrying with S18R set to 0\n");