summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Heidelberg <david@ixit.cz>2025-12-14 17:51:20 +0300
committerNeil Armstrong <neil.armstrong@linaro.org>2025-12-16 13:21:33 +0300
commit5f0cc92fa0dab7cbb999dedc653f5857a62b2022 (patch)
tree1de407cda7bafe71433a8031725b7c0c2083c5df
parentbe85d4124dbe6ed597c7a6a16e53d8b98684fab6 (diff)
downloadlinux-5f0cc92fa0dab7cbb999dedc653f5857a62b2022.tar.xz
drm/panel: sw43408: Separate reset sequence into own function
Splitting reset() from prepare() follows clean coding practices and lets us potentially make reset optional in the future for flicker-less takeover from a bootloader or framebuffer driver where the panel is already configured. Signed-off-by: David Heidelberg <david@ixit.cz> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20251214-pixel-3-v7-4-b1c0cf6f224d@ixit.cz
-rw-r--r--drivers/gpu/drm/panel/panel-lg-sw43408.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index dcca7873acf8..ed9c7452ea84 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -119,6 +119,16 @@ static int sw43408_program(struct drm_panel *panel)
return ctx.accum_err;
}
+static void sw43408_reset(struct sw43408_panel *ctx)
+{
+ gpiod_set_value(ctx->reset_gpio, 0);
+ usleep_range(9000, 10000);
+ gpiod_set_value(ctx->reset_gpio, 1);
+ usleep_range(1000, 2000);
+ gpiod_set_value(ctx->reset_gpio, 0);
+ usleep_range(9000, 10000);
+}
+
static int sw43408_prepare(struct drm_panel *panel)
{
struct sw43408_panel *ctx = to_panel_info(panel);
@@ -130,12 +140,7 @@ static int sw43408_prepare(struct drm_panel *panel)
usleep_range(5000, 6000);
- gpiod_set_value(ctx->reset_gpio, 0);
- usleep_range(9000, 10000);
- gpiod_set_value(ctx->reset_gpio, 1);
- usleep_range(1000, 2000);
- gpiod_set_value(ctx->reset_gpio, 0);
- usleep_range(9000, 10000);
+ sw43408_reset(ctx);
ret = sw43408_program(panel);
if (ret)