Re: [PATCH 3/3 RESEND] mmc: sdhci: check voltage range only onregulators aware of voltage value

From: Marek Szyprowski
Date: Wed Feb 13 2013 - 02:33:27 EST


Hello,

On 2/12/2013 11:10 PM, Guennadi Liakhovetski wrote:
Hi Marek

On Tue, 12 Feb 2013, Marek Szyprowski wrote:

> 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@xxxxxxxxxxx>
> ---
> 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 ba586ae..735526b 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -2976,7 +2976,11 @@ int sdhci_add_host(struct sdhci_host *host)
> }
>
> #ifdef CONFIG_REGULATOR
> - if (host->vmmc) {
> + /*
> + * 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);

Wouldn't using mmc_regulator_get_ocrmask() be a better option?

The idea behind this patch it to avoid messing ocr mask and voltage
regulators when voltage regulator is a simple on/off switch, which doesn't
report any value. This solves the serious problems with sdhci driver when
dummy regulator is enabled in kconfig, otherwise the sdhci driver
concludes that no supported voltage is available and fails to initialize.
Using mmc_regulator_get_ocrmask() won't solve this problem.

BTW, mmc_regulator_get_ocrmask() won't work with continuous range regulators.

Best regards
--
Marek Szyprowski
Samsung Poland R&D Center



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/