drm/panel: sitronix-st7789v: improve error handling
authorSebastian Reichel <sre@kernel.org>
Fri, 14 Jul 2023 01:37:44 +0000 (03:37 +0200)
committerNeil Armstrong <neil.armstrong@linaro.org>
Tue, 1 Aug 2023 08:29:55 +0000 (10:29 +0200)
Improve error handling in the probe routine, so that probe
defer errors are captured in /sys/kernel/debug/devices_deferred

Reviewed-by: Michael Riesch <michael.riesch@wolfvision.net>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230714013756.1546769-8-sre@kernel.org
drivers/gpu/drm/panel/panel-sitronix-st7789v.c

index 6290bd49d05567552b92c87680f48080fc8cc337..a6d6155ef45c2b082dba35b44c4be877b320b17c 100644 (file)
@@ -348,32 +348,33 @@ static const struct drm_panel_funcs st7789v_drm_funcs = {
 
 static int st7789v_probe(struct spi_device *spi)
 {
+       struct device *dev = &spi->dev;
        struct st7789v *ctx;
        int ret;
 
-       ctx = devm_kzalloc(&spi->dev, sizeof(*ctx), GFP_KERNEL);
+       ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
        if (!ctx)
                return -ENOMEM;
 
        spi_set_drvdata(spi, ctx);
        ctx->spi = spi;
 
-       drm_panel_init(&ctx->panel, &spi->dev, &st7789v_drm_funcs,
+       drm_panel_init(&ctx->panel, dev, &st7789v_drm_funcs,
                       DRM_MODE_CONNECTOR_DPI);
 
-       ctx->power = devm_regulator_get(&spi->dev, "power");
-       if (IS_ERR(ctx->power))
-               return PTR_ERR(ctx->power);
+       ctx->power = devm_regulator_get(dev, "power");
+       ret = PTR_ERR_OR_ZERO(ctx->power);
+       if (ret)
+               return dev_err_probe(dev, ret, "Failed to get regulator\n");
 
-       ctx->reset = devm_gpiod_get_optional(&spi->dev, "reset", GPIOD_OUT_LOW);
-       if (IS_ERR(ctx->reset)) {
-               dev_err(&spi->dev, "Couldn't get our reset line\n");
-               return PTR_ERR(ctx->reset);
-       }
+       ctx->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(ctx->reset);
+       if (ret)
+               return dev_err_probe(dev, ret, "Failed to get reset line\n");
 
        ret = drm_panel_of_backlight(&ctx->panel);
        if (ret)
-               return ret;
+               return dev_err_probe(dev, ret, "Failed to get backlight\n");
 
        drm_panel_add(&ctx->panel);