]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/bridge/sii8620: fix resource acquisition error handling
authorAndrzej Hajda <a.hajda@samsung.com>
Mon, 13 Jul 2020 14:43:23 +0000 (16:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Jul 2020 07:03:44 +0000 (09:03 +0200)
In case of error during resource acquisition driver should print error
message only in case it is not deferred probe, using dev_err_probe helper
solves the issue. Moreover it records defer probe reason for debugging.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Link: https://lore.kernel.org/r/20200713144324.23654-4-a.hajda@samsung.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/bridge/sil-sii8620.c

index 92acd336aa894bd40a435df5a2c77116ccd94455..389c1f029774570a33de5b9431443d852470f502 100644 (file)
@@ -2299,10 +2299,9 @@ static int sii8620_probe(struct i2c_client *client,
        INIT_LIST_HEAD(&ctx->mt_queue);
 
        ctx->clk_xtal = devm_clk_get(dev, "xtal");
-       if (IS_ERR(ctx->clk_xtal)) {
-               dev_err(dev, "failed to get xtal clock from DT\n");
-               return PTR_ERR(ctx->clk_xtal);
-       }
+       if (IS_ERR(ctx->clk_xtal))
+               return dev_err_probe(dev, PTR_ERR(ctx->clk_xtal),
+                                    "failed to get xtal clock from DT\n");
 
        if (!client->irq) {
                dev_err(dev, "no irq provided\n");
@@ -2313,16 +2312,14 @@ static int sii8620_probe(struct i2c_client *client,
                                        sii8620_irq_thread,
                                        IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
                                        "sii8620", 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");
 
        ctx->gpio_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
-       if (IS_ERR(ctx->gpio_reset)) {
-               dev_err(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(dev, PTR_ERR(ctx->gpio_reset),
+                                    "failed to get reset gpio from DT\n");
 
        ctx->supplies[0].supply = "cvcc10";
        ctx->supplies[1].supply = "iovcc18";