]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/panel: make prepare/enable and disable/unprepare calls return void
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Tue, 1 Apr 2025 05:11:39 +0000 (08:11 +0300)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Tue, 22 Apr 2025 13:49:11 +0000 (16:49 +0300)
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.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250401-panel-return-void-v1-7-93e1be33dc8d@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drivers/gpu/drm/drm_panel.c
drivers/gpu/drm/panel/panel-newvision-nv3051d.c
include/drm/drm_panel.h

index 99b348782ce31c4421233748c32adddb3ebd1db2..650de4da0853741d7e4bc2e98a36947b55e24769 100644 (file)
@@ -106,21 +106,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);
@@ -139,11 +139,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);
 
@@ -155,16 +152,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:
@@ -177,7 +172,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);
@@ -196,11 +191,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);
 
@@ -210,26 +202,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;
 
@@ -237,8 +229,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);
 
@@ -249,15 +239,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:
@@ -270,7 +258,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);
@@ -281,11 +269,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);
 
index 5d115ecd5dd44c8e5e7d1fb8afe573324e987f59..b6429795e8f518646443dd8179f3ec28cef4dc0f 100644 (file)
@@ -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)
index 31d84f901c514c93ab6cbc09f445853ef897bc95..843fb756a2950a8b72a00510063cb31ccdbac5a2 100644 (file)
@@ -316,11 +316,11 @@ void drm_panel_put(struct drm_panel *panel);
 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);