summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaustabh Chakraborty <[email protected]>2025-10-17 20:54:10 +0530
committerPeng Fan <[email protected]>2025-10-30 10:11:17 +0800
commit0b75109b6aafd1e796bc8cee0953cd6c5ba77610 (patch)
tree2585a08d03a34f1acc733b116ad51063c7c4fa89
parente6b66e9f338fe9c8a6bc498399e736f7ec9deb10 (diff)
mmc: dw_mmc: return error for invalid voltage setting
In certain cases, the VQMMC regulator may not support certain voltages. For instance, a VQMMC regulator which supports only up to 2.7V will not accept 3.3V as an argument. This is unaccounted for, and thus the driver incorrectly assumes that the voltage is set successfully. Fetch the return value in a variable and return if it's non-zero. (-ENOSYS is exempted as it implies that the voltage adjustment functionality as a whole isn't supported). Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
-rw-r--r--drivers/mmc/dw_mmc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
index 94b6641c44c..9b143f9931e 100644
--- a/drivers/mmc/dw_mmc.c
+++ b/drivers/mmc/dw_mmc.c
@@ -649,9 +649,11 @@ static int dwmci_set_ios(struct mmc *mmc)
return ret;
if (mmc->signal_voltage == MMC_SIGNAL_VOLTAGE_180)
- regulator_set_value(mmc->vqmmc_supply, 1800000);
+ ret = regulator_set_value(mmc->vqmmc_supply, 1800000);
else
- regulator_set_value(mmc->vqmmc_supply, 3300000);
+ ret = regulator_set_value(mmc->vqmmc_supply, 3300000);
+ if (ret && ret != -ENOSYS)
+ return ret;
ret = regulator_set_enable_if_allowed(mmc->vqmmc_supply, true);
if (ret)