Re: [PATCH RESEND] mmc: core: Improve support for deferred regulators

From: Tim Kryger
Date: Tue Apr 29 2014 - 13:00:38 EST


On Fri, Apr 25, 2014 at 2:33 PM, Andrew Bresticker
<abrestic@xxxxxxxxxxxx> wrote:
>>
>> - if (IS_ERR(supply))
>> - return PTR_ERR(supply);
>> + if (IS_ERR(mmc->supply.vmmc)) {
>> + if (PTR_ERR(mmc->supply.vmmc) == -EPROBE_DEFER)
>> + return -EPROBE_DEFER;
>> + dev_info(dev, "No vmmc regulator found\n");
>> + } else {
>> + ret = mmc_regulator_get_ocrmask(mmc->supply.vmmc);
>> + if (ret > 0)
>> + mmc->ocr_avail = ret;
>> + else
>> + dev_warn(dev, "Failed getting OCR mask: %d\n", ret);
>> + }
>
> I think we also need to handle the case where supply is NULL, i.e.
> !CONFIG_REGULATOR. The SDHCI driver, for example, calls
> regulator_is_supported_voltage() which will always return false on
> NULL regulators. Perhaps we should set the supplies to
> ERR_PTR(-ENODEV) in that case?

As of v3.15-rc3, this function would do the right thing because
df7926f modified the regulator get optional stubs to return -ENODEV in
the !CONFIG_REGULATOR case. However, this implementation of
mmc_regulator_get_supply doesn't actually get built for that case. A
stub implementation is used instead. Presently that stub
mmc_regulator_get_supply does nothing other than return zero but
perhaps it should initialize the supplies as you suggest.
Alternatively, the stub could be eliminated such that this
implementation is used in all cases. Do you have a preference?

-Tim
--
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/