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

From: Andrew Bresticker
Date: Tue Apr 29 2014 - 13:36:41 EST


On Tue, Apr 29, 2014 at 10:00 AM, Tim Kryger <tim.kryger@xxxxxxxxxx> wrote:
> 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?

Since this now behaves correctly regardless of CONFIG_REGULATOR, then
perhaps it's best to eliminate the stub.

Thanks,
Andrew

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