On 08/09/2026 14:15, Neil Armstrong wrote:
On 9/6/26 15:19, David Heidelberg via B4 Relay wrote:
From: David Heidelberg <[email protected]>

Efficiently this already happens with prepare/unprepare calls.
Remove unnecessary login and just use enable/disable functions.

I would replace with:

Move the MIPI commands into enable/disable callbacks since they
are called between prepare/unprepare callbacks.


I'll adjust.

Or similar.


Signed-off-by: David Heidelberg <[email protected]>
---
  drivers/gpu/drm/panel/panel-ebbg-ft8719.c | 17 +++++++----------
  1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-ebbg-ft8719.c b/drivers/gpu/drm/ panel/panel-ebbg-ft8719.c
index 14982263a94f1..9965f46f1a316 100644
--- a/drivers/gpu/drm/panel/panel-ebbg-ft8719.c
+++ b/drivers/gpu/drm/panel/panel-ebbg-ft8719.c
@@ -49,40 +49,42 @@ static void ebbg_ft8719_reset(struct ebbg_ft8719 *ctx)
      gpiod_set_value_cansleep(ctx->reset_gpio, 0);
      usleep_range(4000, 5000);
      gpiod_set_value_cansleep(ctx->reset_gpio, 1);
      usleep_range(1000, 2000);
      gpiod_set_value_cansleep(ctx->reset_gpio, 0);
      usleep_range(15000, 16000);
  }
-static int ebbg_ft8719_on(struct ebbg_ft8719 *ctx)
+static int ebbg_ft8719_enable(struct drm_panel *panel)
  {
+    struct ebbg_ft8719 *ctx = to_ebbg_ft8719(panel);
      struct mipi_dsi_device *dsi = ctx->dsi;
      struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi };
      dsi->mode_flags |= MIPI_DSI_MODE_LPM;
      mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx, 0x00ff);
      mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_CONTROL_DISPLAY, 0x24);
      mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_POWER_SAVE, 0x00);
      mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);
      mipi_dsi_msleep(&dsi_ctx, 90);
      mipi_dsi_dcs_set_display_on_multi(&dsi_ctx);
      return dsi_ctx.accum_err;
  }
-static int ebbg_ft8719_off(struct ebbg_ft8719 *ctx)
+static int ebbg_ft8719_disable(struct drm_panel *panel)
  {
+    struct ebbg_ft8719 *ctx = to_ebbg_ft8719(panel);
      struct mipi_dsi_device *dsi = ctx->dsi;
      struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi };
-    dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
+    ctx->dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
      mipi_dsi_dcs_set_display_off_multi(&dsi_ctx);
      mipi_dsi_usleep_range(&dsi_ctx, 10000, 11000);
      mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx);
      mipi_dsi_msleep(&dsi_ctx, 90);
      return dsi_ctx.accum_err;

Before the ebbg_ft8719_off() return error was ignored, perhaps you still want to ignore the disable return error.

Sure, make sense. Next revision will land in minutes!
Thanks
David


Neil

  }
@@ -93,30 +95,23 @@ static int ebbg_ft8719_prepare(struct drm_panel *panel)
      int ret;
      ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
      if (ret < 0)
          return ret;
      ebbg_ft8719_reset(ctx);
-    ret = ebbg_ft8719_on(ctx);
-    if (ret < 0) {
-        gpiod_set_value_cansleep(ctx->reset_gpio, 1);
-        return ret;
-    }
-
      return 0;
  }
  static int ebbg_ft8719_unprepare(struct drm_panel *panel)
  {
      struct ebbg_ft8719 *ctx = to_ebbg_ft8719(panel);
-    ebbg_ft8719_off(ctx);
      gpiod_set_value_cansleep(ctx->reset_gpio, 1);
      regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
      return 0;
  }
  static const struct drm_display_mode ebbg_ft8719_mode = {
      .clock = (1080 + 28 + 4 + 16) * (2246 + 120 + 4 + 12) * 60 / 1000,
@@ -148,16 +143,18 @@ static int ebbg_ft8719_get_modes(struct drm_panel *panel,
      connector->display_info.height_mm = mode->height_mm;
      drm_mode_probed_add(connector, mode);
      return 1;
  }
  static const struct drm_panel_funcs ebbg_ft8719_panel_funcs = {
      .prepare = ebbg_ft8719_prepare,
+    .enable = ebbg_ft8719_enable,
+    .disable = ebbg_ft8719_disable,
      .unprepare = ebbg_ft8719_unprepare,
      .get_modes = ebbg_ft8719_get_modes,
  };
  static int ebbg_ft8719_probe(struct mipi_dsi_device *dsi)
  {
      struct device *dev = &dsi->dev;
      struct ebbg_ft8719 *ctx;




Reply via email to