Re: [PATCH 3/3] mmc: sdhci: check voltage range only on regulators aware of voltage value
From: Kevin Liu <hidden>
Date: 2012-12-04 14:50:08
Also in:
lkml
2012/12/4 Marek Szyprowski [off-list ref]:
quoted hunk ↗ jump to hunk
Some regulators don't report any voltage values, so checking supported voltage range results in disabling all SDHCI_CAN_VDD_* flags and registration failure. This patch finally provides a correct fix for the registration of SDHCI driver with all possible voltage regulators: dummy, fixed and regulated without using regulator_count_voltages() hacks. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> --- drivers/mmc/host/sdhci.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index a9ad2cd..d244dc0 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c@@ -2930,7 +2930,11 @@ int sdhci_add_host(struct sdhci_host *host) } #ifdef CONFIG_REGULATOR - if (host->vmmc && regulator_count_voltages(host->vmmc) > 1) { + /* + * Voltage range check makes sense only if regulator reports + * any voltage value. + */ + if (host->vmmc && regulator_get_voltage(host->vmmc) > 0) { ret = regulator_is_supported_voltage(host->vmmc, 2700000, 3600000); if ((ret <= 0) || (!(caps[0] & SDHCI_CAN_VDD_330)))
Good idea. But how about the regulator is disabled at this point? So I
suggest to change to
if (host->vmmc && regulator_get_voltage(host->vmmc) >= 0)
Thanks
Kevin