[PATCH 2/5] cpufreq: imx6q: Fix handling EPROBE_DEFER from regulator
Lucas Stach
l.stach at pengutronix.de
Tue Apr 4 02:48:02 PDT 2017
Am Freitag, den 31.03.2017, 22:25 +0300 schrieb Leonard Crestez:
> From: Irina Tirdea <irina.tirdea at nxp.com>
>
> If there are any errors in getting the cpu0 regulators, the driver returns
> -ENOENT. In case the regulators are not yet available, the devm_regulator_get
> calls will return -EPROBE_DEFER, so that the driver can be probed later.
> If we return -ENOENT, the driver will fail its initialization and will
> not try to probe again (when the regulators become available).
>
> Return the actual error received from regulator_get in probe. Print a
> differentiated message in case we need to probe the device later and
> in case we actually failed. Also add a message to inform when the
> driver has been successfully registered.
>
> Signed-off-by: Irina Tirdea <irina.tirdea at nxp.com>
> Signed-off-by: Leonard Crestez <leonard.crestez at nxp.com>
> Acked-by: Viresh Kumar <viresh.kumar at linaro.org>
Reviewed-by: Lucas Stach <l.stach at pengutronix.de>
> ---
> drivers/cpufreq/imx6q-cpufreq.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/cpufreq/imx6q-cpufreq.c b/drivers/cpufreq/imx6q-cpufreq.c
> index 7719b02..be90ee3 100644
> --- a/drivers/cpufreq/imx6q-cpufreq.c
> +++ b/drivers/cpufreq/imx6q-cpufreq.c
> @@ -222,6 +222,13 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev)
> arm_reg = regulator_get(cpu_dev, "arm");
> pu_reg = regulator_get_optional(cpu_dev, "pu");
> soc_reg = regulator_get(cpu_dev, "soc");
> + if (PTR_ERR(arm_reg) == -EPROBE_DEFER ||
> + PTR_ERR(soc_reg) == -EPROBE_DEFER ||
> + PTR_ERR(pu_reg) == -EPROBE_DEFER) {
> + ret = -EPROBE_DEFER;
> + dev_dbg(cpu_dev, "regulators not ready, defer\n");
> + goto put_reg;
> + }
> if (IS_ERR(arm_reg) || IS_ERR(soc_reg)) {
> dev_err(cpu_dev, "failed to get regulators\n");
> ret = -ENOENT;
More information about the linux-arm-kernel
mailing list