On 01/04/2025 07:11, Dmitry Baryshkov wrote:
Now there are no users of the return value of the drm_panel_prepare(),
drm_panel_unprepare(), drm_panel_enable() and drm_panel_disable() calls.
Usually these calls are performed from the atomic callbacks, where it is
impossible to return an error. Stop returning error codes and return
void instead.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@oss.qualcomm.com>
---
  drivers/gpu/drm/drm_panel.c                     | 54 +++++++++----------------
  drivers/gpu/drm/panel/panel-newvision-nv3051d.c |  9 +----
  include/drm/drm_panel.h                         |  8 ++--
  3 files changed, 26 insertions(+), 45 deletions(-)

diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c
index 
c627e42a7ce70459f50eb5095fffc806ca45dabf..faa7a76b63b53b3a45b3400d8bf3b58a027a340e
 100644
--- a/drivers/gpu/drm/drm_panel.c
+++ b/drivers/gpu/drm/drm_panel.c
@@ -105,21 +105,21 @@ EXPORT_SYMBOL(drm_panel_remove);
   *
   * Calling this function will enable power and deassert any reset signals to
   * the panel. After this has completed it is possible to communicate with any
- * integrated circuitry via a command bus.
- *
- * Return: 0 on success or a negative error code on failure.
+ * integrated circuitry via a command bus. This function cannot fail (as it is
+ * called from the pre_enable call chain). There will always be a call to
+ * drm_panel_disable() afterwards.
   */
-int drm_panel_prepare(struct drm_panel *panel)
+void drm_panel_prepare(struct drm_panel *panel)
  {
        struct drm_panel_follower *follower;
        int ret;
if (!panel)
-               return -EINVAL;
+               return;
if (panel->prepared) {
                dev_warn(panel->dev, "Skipping prepare of already prepared 
panel\n");
-               return 0;
+               return;
        }
mutex_lock(&panel->follower_lock);
@@ -138,11 +138,8 @@ int drm_panel_prepare(struct drm_panel *panel)
                                 follower->funcs->panel_prepared, ret);
        }
- ret = 0;
  exit:
        mutex_unlock(&panel->follower_lock);
-
-       return ret;
  }
  EXPORT_SYMBOL(drm_panel_prepare);
@@ -154,16 +151,14 @@ EXPORT_SYMBOL(drm_panel_prepare);
   * reset, turn off power supplies, ...). After this function has completed, it
   * is usually no longer possible to communicate with the panel until another
   * call to drm_panel_prepare().
- *
- * Return: 0 on success or a negative error code on failure.
   */
-int drm_panel_unprepare(struct drm_panel *panel)
+void drm_panel_unprepare(struct drm_panel *panel)
  {
        struct drm_panel_follower *follower;
        int ret;
if (!panel)
-               return -EINVAL;
+               return;
/*
         * If you are seeing the warning below it likely means one of two 
things:
@@ -176,7 +171,7 @@ int drm_panel_unprepare(struct drm_panel *panel)
         */
        if (!panel->prepared) {
                dev_warn(panel->dev, "Skipping unprepare of already unprepared 
panel\n");
-               return 0;
+               return;
        }
mutex_lock(&panel->follower_lock);
@@ -195,11 +190,8 @@ int drm_panel_unprepare(struct drm_panel *panel)
        }
        panel->prepared = false;
- ret = 0;
  exit:
        mutex_unlock(&panel->follower_lock);
-
-       return ret;
  }
  EXPORT_SYMBOL(drm_panel_unprepare);
@@ -209,26 +201,26 @@ EXPORT_SYMBOL(drm_panel_unprepare);
   *
   * Calling this function will cause the panel display drivers to be turned on
   * and the backlight to be enabled. Content will be visible on screen after
- * this call completes.
- *
- * Return: 0 on success or a negative error code on failure.
+ * this call completes. This function cannot fail (as it is called from the
+ * enable call chain). There will always be a call to drm_panel_disable()
+ * afterwards.
   */
-int drm_panel_enable(struct drm_panel *panel)
+void drm_panel_enable(struct drm_panel *panel)
  {
        int ret;
if (!panel)
-               return -EINVAL;
+               return;
if (panel->enabled) {
                dev_warn(panel->dev, "Skipping enable of already enabled 
panel\n");
-               return 0;
+               return;
        }
if (panel->funcs && panel->funcs->enable) {
                ret = panel->funcs->enable(panel);
                if (ret < 0)
-                       return ret;
+                       return;
        }
        panel->enabled = true;
@@ -236,8 +228,6 @@ int drm_panel_enable(struct drm_panel *panel)
        if (ret < 0)
                DRM_DEV_INFO(panel->dev, "failed to enable backlight: %d\n",
                             ret);
-
-       return 0;
  }
  EXPORT_SYMBOL(drm_panel_enable);
@@ -248,15 +238,13 @@ EXPORT_SYMBOL(drm_panel_enable);
   * This will typically turn off the panel's backlight or disable the display
   * drivers. For smart panels it should still be possible to communicate with
   * the integrated circuitry via any command bus after this call.
- *
- * Return: 0 on success or a negative error code on failure.
   */
-int drm_panel_disable(struct drm_panel *panel)
+void drm_panel_disable(struct drm_panel *panel)
  {
        int ret;
if (!panel)
-               return -EINVAL;
+               return;
/*
         * If you are seeing the warning below it likely means one of two 
things:
@@ -269,7 +257,7 @@ int drm_panel_disable(struct drm_panel *panel)
         */
        if (!panel->enabled) {
                dev_warn(panel->dev, "Skipping disable of already disabled 
panel\n");
-               return 0;
+               return;
        }
ret = backlight_disable(panel->backlight);
@@ -280,11 +268,9 @@ int drm_panel_disable(struct drm_panel *panel)
        if (panel->funcs && panel->funcs->disable) {
                ret = panel->funcs->disable(panel);
                if (ret < 0)
-                       return ret;
+                       return;
        }
        panel->enabled = false;
-
-       return 0;
  }
  EXPORT_SYMBOL(drm_panel_disable);
diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c
index 
5d115ecd5dd44c8e5e7d1fb8afe573324e987f59..b6429795e8f518646443dd8179f3ec28cef4dc0f
 100644
--- a/drivers/gpu/drm/panel/panel-newvision-nv3051d.c
+++ b/drivers/gpu/drm/panel/panel-newvision-nv3051d.c
@@ -413,15 +413,10 @@ static int panel_nv3051d_probe(struct mipi_dsi_device 
*dsi)
  static void panel_nv3051d_shutdown(struct mipi_dsi_device *dsi)
  {
        struct panel_nv3051d *ctx = mipi_dsi_get_drvdata(dsi);
-       int ret;
- ret = drm_panel_unprepare(&ctx->panel);
-       if (ret < 0)
-               dev_err(&dsi->dev, "Failed to unprepare panel: %d\n", ret);
+       drm_panel_unprepare(&ctx->panel);
- ret = drm_panel_disable(&ctx->panel);
-       if (ret < 0)
-               dev_err(&dsi->dev, "Failed to disable panel: %d\n", ret);
+       drm_panel_disable(&ctx->panel);
  }
static void panel_nv3051d_remove(struct mipi_dsi_device *dsi)
diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h
index 
a9c042c8dea1a82ef979c7a68204e0b55483fc28..18bf338c8b96254dc3f2880106b944e71ea4c9a7
 100644
--- a/include/drm/drm_panel.h
+++ b/include/drm/drm_panel.h
@@ -275,11 +275,11 @@ void drm_panel_init(struct drm_panel *panel, struct 
device *dev,
  void drm_panel_add(struct drm_panel *panel);
  void drm_panel_remove(struct drm_panel *panel);
-int drm_panel_prepare(struct drm_panel *panel);
-int drm_panel_unprepare(struct drm_panel *panel);
+void drm_panel_prepare(struct drm_panel *panel);
+void drm_panel_unprepare(struct drm_panel *panel);
-int drm_panel_enable(struct drm_panel *panel);
-int drm_panel_disable(struct drm_panel *panel);
+void drm_panel_enable(struct drm_panel *panel);
+void drm_panel_disable(struct drm_panel *panel);
int drm_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector);

LGTM

Reviewed-by: Neil Armstrong <neil.armstr...@linaro.org>

Reply via email to