Skip to contentSkip to conversation

regulator: pwm-regulator: Make use of the helper function dev_err_probe()

PATCH Superseded Anand Moon 2 participants 4 messages Sep 20, 2021 – Sep 21, 2021

Subsystems (2)

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore

Anand Moon

author
#0 lore raw

PATCH v2 1/1 regulator: pwm-regulator: Make use of the helper function dev_err_probe()

devm_pwm_get() can return -EPROBE_DEFER if the pwm regulator is not ready yet. Use dev_err_probe() for pwm regulator resources to indicate the deferral reason when waiting for the resource to come up.

Fixes 0cd71b9a43ad ("regulator: pwm: Don't warn on probe deferral")
Cc Martin Blumenstingl <[email protected]>

---
V1 - Fix the wrong probe defer for devm_regulator_register.
- Fix the commit message.

---
 drivers/regulator/pwm-regulator.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)
drivers/regulator/pwm-regulator.c +3 -7
index 7629476d94ae..3bd020641b67 100644
@@ -353,13 +353,9 @@ static int pwm_regulator_probe(struct platform_device *pdev)
 
 	drvdata->pwm = devm_pwm_get(&pdev->dev, NULL);
 	if (IS_ERR(drvdata->pwm)) {
-		ret = PTR_ERR(drvdata->pwm);
-		if (ret == -EPROBE_DEFER)
-			dev_dbg(&pdev->dev,
-				"Failed to get PWM, deferring probe\n");
-		else
-			dev_err(&pdev->dev, "Failed to get PWM: %d\n", ret);
-		return ret;
+		return dev_err_probe(&pdev->dev, PTR_ERR(drvdata->pwm),
+				     "Failed to register regulator %s\n",
+				     drvdata->desc.name);
 	}
 
 	if (init_data->constraints.boot_on || init_data->constraints.always_on)
Signature · 7 lines
2.33.0


_______________________________________________
linux-amlogic mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-amlogic
#1 lore raw

Hi Anand,

Quoted 7 lines · Anand Moon

devm_pwm_get() can return -EPROBE_DEFER if the pwm regulator is not ready yet. Use dev_err_probe() for pwm regulator resources to indicate the deferral reason when waiting for the resource to come up.

Fixes 0cd71b9a43ad ("regulator: pwm: Don't warn on probe deferral")

Personally I consider this as an improvement (having the deferral reason show up in debugfs), not a bugfix.
Because of that I would drop the Fixes tag.
Let's wait on other people's opinions though.

[...]

drivers/regulator/pwm-regulator.c static int pwm_regulator_probe(struct platform_device *pdev) · line 357

Quoted 4 lines
drivers/regulator/pwm-regulator.c +2 -2
-                       dev_err(&pdev->dev, "Failed to get PWM: %d\n", ret);
-               return ret;
+               return dev_err_probe(&pdev->dev, PTR_ERR(drvdata->pwm),
+                                    "Failed to register regulator %s\n",

The message here should still be similar to the original one since the actual problem is that we could not get a reference to the PWM controller. At this point we are not trying to register the pwm-regulator yet.

Best regards,
Martin

author
#2 lore raw

Hi Martin,

Quoted 10 lines · Martin Blumenstingl

Hi Anand,

Quoted 6 lines · Anand Moon

devm_pwm_get() can return -EPROBE_DEFER if the pwm regulator is not ready yet. Use dev_err_probe() for pwm regulator resources to indicate the deferral reason when waiting for the resource to come up.

Quoted 6 lines
Quoted 1 line
Fixes 0cd71b9a43ad ("regulator: pwm: Don't warn on probe deferral")

Personally I consider this as an improvement (having the deferral reason show up in debugfs), not a bugfix.
Because of that I would drop the Fixes tag.
Let's wait on other people's opinions though.

Ok will drop this in the next version.

Quoted 10 lines

[...]

drivers/regulator/pwm-regulator.c static int pwm_regulator_probe(struct platform_device *pdev) · line 357

Quoted 4 lines
drivers/regulator/pwm-regulator.c +2 -2
-                       dev_err(&pdev->dev, "Failed to get PWM: %d\n", ret);
-               return ret;
+               return dev_err_probe(&pdev->dev, PTR_ERR(drvdata->pwm),
+                                    "Failed to register regulator %s\n",

The message here should still be similar to the original one since the actual problem is that we could not get a reference to the PWM controller. At this point we are not trying to register the pwm-regulator yet.

Yep, Typo I mixed up the logs completely. it should be "Failed to get PWM, deferring probe"

Thanks
-Anand

Quoted 3 lines

Best regards,
Martin

#3 lore raw

Hi Anand,

On Tue, Sep 21, 2021 at 9:21 PM Anand Moon <[email protected]> wrote:
[...]

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
drivers/regulator/pwm-regulator.c +2 -2
-                       dev_err(&pdev->dev, "Failed to get PWM: %d\n", ret);
-               return ret;
+               return dev_err_probe(&pdev->dev, PTR_ERR(drvdata->pwm),
+                                    "Failed to register regulator %s\n",
Quoted 8 lines
Quoted 5 lines

The message here should still be similar to the original one since the actual problem is that we could not get a reference to the PWM controller. At this point we are not trying to register the pwm-regulator yet.

Yep, Typo I mixed up the logs completely. it should be "Failed to get PWM, deferring probe"

I think it should only be "Failed to get PWM" only - without "deferring probe". If the PWM is missing in .dts (which is not valid but might happen for someone who's creating a new .dts) then the "deferring probe" part is not correct as the error code is not -EPROBE_DEFER (it may be -ENOENT instead - or similar).

Best regards,
Martin