In case of error during resource acquisition the driver should print
an error message only if it is not deferred probe. Use dev_err_probe
helper to handle this, which will also record defer probe reason for
debugging.
Signed-off-by: Henrik Grimler <henrik@grimler.se>
---
v2: no changes
---
drivers/gpu/drm/bridge/sii9234.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c
index 930117bbba87285e62107389606897740516eb0a..0e0bb1bf71fdcef788715cfd6fa158a6992def33 100644
--- a/drivers/gpu/drm/bridge/sii9234.c
+++ b/drivers/gpu/drm/bridge/sii9234.c
@@ -825,10 +825,9 @@ static int sii9234_init_resources(struct sii9234 *ctx,
}
ctx->gpio_reset = devm_gpiod_get(ctx->dev, "reset", GPIOD_OUT_LOW);
- if (IS_ERR(ctx->gpio_reset)) {
- dev_err(ctx->dev, "failed to get reset gpio from DT\n");
- return PTR_ERR(ctx->gpio_reset);
- }
+ if (IS_ERR(ctx->gpio_reset))
+ return dev_err_probe(ctx->dev, PTR_ERR(ctx->gpio_reset),
+ "failed to get reset gpio from DT\n");
ctx->supplies[0].supply = "avcc12";
ctx->supplies[1].supply = "avcc33";
@@ -836,9 +835,7 @@ static int sii9234_init_resources(struct sii9234 *ctx,
ctx->supplies[3].supply = "cvcc12";
ret = devm_regulator_bulk_get(ctx->dev, 4, ctx->supplies);
if (ret) {
- if (ret != -EPROBE_DEFER)
- dev_err(ctx->dev, "regulator_bulk failed\n");
- return ret;
+ dev_err_probe(ctx->dev, ret, "regulator_bulk failed\n");
}
ctx->client[I2C_MHL] = client;
@@ -911,10 +908,9 @@ static int sii9234_probe(struct i2c_client *client)
sii9234_irq_thread,
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
"sii9234", ctx);
- if (ret < 0) {
- dev_err(dev, "failed to install IRQ handler\n");
- return ret;
- }
+ if (ret < 0)
+ return dev_err_probe(dev, ret,
+ "failed to install IRQ handler\n");
ret = sii9234_init_resources(ctx, client);
if (ret < 0)
--
2.50.1
On Thu, Jul 24, 2025 at 08:50:52PM +0200, Henrik Grimler wrote: > In case of error during resource acquisition the driver should print > an error message only if it is not deferred probe. Use dev_err_probe > helper to handle this, which will also record defer probe reason for > debugging. > > Signed-off-by: Henrik Grimler <henrik@grimler.se> > --- > v2: no changes > --- > drivers/gpu/drm/bridge/sii9234.c | 18 +++++++----------- > 1 file changed, 7 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c > index 930117bbba87285e62107389606897740516eb0a..0e0bb1bf71fdcef788715cfd6fa158a6992def33 100644 > --- a/drivers/gpu/drm/bridge/sii9234.c > +++ b/drivers/gpu/drm/bridge/sii9234.c > @@ -825,10 +825,9 @@ static int sii9234_init_resources(struct sii9234 *ctx, > } > > ctx->gpio_reset = devm_gpiod_get(ctx->dev, "reset", GPIOD_OUT_LOW); > - if (IS_ERR(ctx->gpio_reset)) { > - dev_err(ctx->dev, "failed to get reset gpio from DT\n"); > - return PTR_ERR(ctx->gpio_reset); > - } > + if (IS_ERR(ctx->gpio_reset)) > + return dev_err_probe(ctx->dev, PTR_ERR(ctx->gpio_reset), > + "failed to get reset gpio from DT\n"); > > ctx->supplies[0].supply = "avcc12"; > ctx->supplies[1].supply = "avcc33"; > @@ -836,9 +835,7 @@ static int sii9234_init_resources(struct sii9234 *ctx, > ctx->supplies[3].supply = "cvcc12"; > ret = devm_regulator_bulk_get(ctx->dev, 4, ctx->supplies); > if (ret) { > - if (ret != -EPROBE_DEFER) > - dev_err(ctx->dev, "regulator_bulk failed\n"); > - return ret; > + dev_err_probe(ctx->dev, ret, "regulator_bulk failed\n"); Drop the braces, use 'return dev_err_probe(...)' > } > > ctx->client[I2C_MHL] = client; > @@ -911,10 +908,9 @@ static int sii9234_probe(struct i2c_client *client) > sii9234_irq_thread, > IRQF_TRIGGER_HIGH | IRQF_ONESHOT, > "sii9234", ctx); > - if (ret < 0) { > - dev_err(dev, "failed to install IRQ handler\n"); > - return ret; > - } > + if (ret < 0) > + return dev_err_probe(dev, ret, > + "failed to install IRQ handler\n"); > > ret = sii9234_init_resources(ctx, client); > if (ret < 0) > > -- > 2.50.1 > -- With best wishes Dmitry
Hi Dmitry, On Sun, Jul 27, 2025 at 07:38:12PM +0300, Dmitry Baryshkov wrote: > On Thu, Jul 24, 2025 at 08:50:52PM +0200, Henrik Grimler wrote: > > In case of error during resource acquisition the driver should print > > an error message only if it is not deferred probe. Use dev_err_probe > > helper to handle this, which will also record defer probe reason for > > debugging. [...] > > @@ -836,9 +835,7 @@ static int sii9234_init_resources(struct sii9234 *ctx, > > ctx->supplies[3].supply = "cvcc12"; > > ret = devm_regulator_bulk_get(ctx->dev, 4, ctx->supplies); > > if (ret) { > > - if (ret != -EPROBE_DEFER) > > - dev_err(ctx->dev, "regulator_bulk failed\n"); > > - return ret; > > + dev_err_probe(ctx->dev, ret, "regulator_bulk failed\n"); > > Drop the braces, use 'return dev_err_probe(...)' > > > } > > > > ctx->client[I2C_MHL] = client; Thanks for reviewing and spotting that, will fix in next version! Best regards, Henrik Grimler
© 2016 - 2025 Red Hat, Inc.