cpufreq: mediatek: Handle sram regulator probe deferral
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Wed, 13 Jul 2022 11:15:36 +0000 (13:15 +0200)
committerViresh Kumar <viresh.kumar@linaro.org>
Wed, 13 Jul 2022 11:21:32 +0000 (16:51 +0530)
If the regulator_get_optional() call for the SRAM regulator returns
a probe deferral, we must bail out and retry probing later: failing
to do this will produce unstabilities on platforms requiring the
handling for this regulator.

Fixes: ffa7bdf7f344 ("cpufreq: mediatek: Make sram regulator optional")
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/mediatek-cpufreq.c

index 37a1eb2..76f6b38 100644 (file)
@@ -439,9 +439,13 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
 
        /* Both presence and absence of sram regulator are valid cases. */
        info->sram_reg = regulator_get_optional(cpu_dev, "sram");
-       if (IS_ERR(info->sram_reg))
+       if (IS_ERR(info->sram_reg)) {
+               ret = PTR_ERR(info->sram_reg);
+               if (ret == -EPROBE_DEFER)
+                       goto out_free_resources;
+
                info->sram_reg = NULL;
-       else {
+       else {
                ret = regulator_enable(info->sram_reg);
                if (ret) {
                        dev_warn(cpu_dev, "cpu%d: failed to enable vsram\n", cpu);