mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-25 12:05:31 +00:00
mmc: core: Return 1 from mmc_regulator_set_vqmmc() if switch skipped
Adjust mmc_regulator_set_vqmmc() to return 1 if the voltage switch was skipped because the regulator voltage was already correct. This allows drivers to detect such condition and possibly skip various voltage switching extras. Signed-off-by: Marek Vasut <marex@denx.de> Link: https://lore.kernel.org/r/20200416163649.336967-2-marex@denx.de Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
9cbe0fc8cd
commit
17a0751e60
@ -136,6 +136,8 @@ static int mmc_regulator_set_voltage_if_supported(struct regulator *regulator,
|
||||
int min_uV, int target_uV,
|
||||
int max_uV)
|
||||
{
|
||||
int current_uV;
|
||||
|
||||
/*
|
||||
* Check if supported first to avoid errors since we may try several
|
||||
* signal levels during power up and don't want to show errors.
|
||||
@ -143,6 +145,14 @@ static int mmc_regulator_set_voltage_if_supported(struct regulator *regulator,
|
||||
if (!regulator_is_supported_voltage(regulator, min_uV, max_uV))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* The voltage is already set, no need to switch.
|
||||
* Return 1 to indicate that no switch happened.
|
||||
*/
|
||||
current_uV = regulator_get_voltage(regulator);
|
||||
if (current_uV == target_uV)
|
||||
return 1;
|
||||
|
||||
return regulator_set_voltage_triplet(regulator, min_uV, target_uV,
|
||||
max_uV);
|
||||
}
|
||||
@ -198,9 +208,10 @@ int mmc_regulator_set_vqmmc(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||
* voltage in two steps and try to stay close to vmmc
|
||||
* with a 0.3V tolerance at first.
|
||||
*/
|
||||
if (!mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc,
|
||||
min_uV, volt, max_uV))
|
||||
return 0;
|
||||
ret = mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc,
|
||||
min_uV, volt, max_uV);
|
||||
if (ret >= 0)
|
||||
return ret;
|
||||
|
||||
return mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc,
|
||||
2700000, volt, 3600000);
|
||||
|
Loading…
x
Reference in New Issue
Block a user