]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drivers/panel: raydium-rm67200: Make reset-gpio optional
authorAndy Yan <andy.yan@rock-chips.com>
Mon, 16 Jun 2025 07:05:17 +0000 (15:05 +0800)
committerNeil Armstrong <neil.armstrong@linaro.org>
Mon, 30 Jun 2025 15:39:57 +0000 (17:39 +0200)
Although the datasheet of the panel module describes that it has a
reset pin, in the actual hardware design, we often use an RC circuit
to control the reset, and rarely use GPIO to control the reset. This
is the way it is done on our numerous development boards (such as
RK3568/RK3576 EVB).

So make the reset-gpio optional.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250616070536.670519-2-andyshrk@163.com
drivers/gpu/drm/panel/panel-raydium-rm67200.c

index 1da8225e6f7a5cff94a882874be909db1d28fe86..654ce2739ccde12ef398561d01255958f4dbf71d 100644 (file)
@@ -36,12 +36,14 @@ static inline struct raydium_rm67200 *to_raydium_rm67200(struct drm_panel *panel
 
 static void raydium_rm67200_reset(struct raydium_rm67200 *ctx)
 {
-       gpiod_set_value_cansleep(ctx->reset_gpio, 0);
-       msleep(60);
-       gpiod_set_value_cansleep(ctx->reset_gpio, 1);
-       msleep(60);
-       gpiod_set_value_cansleep(ctx->reset_gpio, 0);
-       msleep(60);
+       if (ctx->reset_gpio) {
+               gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+               msleep(60);
+               gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+               msleep(60);
+               gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+               msleep(60);
+       }
 }
 
 static void raydium_rm67200_write(struct mipi_dsi_multi_context *ctx,
@@ -409,7 +411,7 @@ static int raydium_rm67200_probe(struct mipi_dsi_device *dsi)
        if (ret < 0)
                return ret;
 
-       ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
+       ctx->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
        if (IS_ERR(ctx->reset_gpio))
                return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
                                     "Failed to get reset-gpios\n");