Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/panel: kingdisplay-kd097d04: Don't call unprepare+disable at shutdown/remove

It's the responsibility of a correctly written DRM modeset driver to
call drm_atomic_helper_shutdown() at shutdown time and that should be
disabling / unpreparing the panel if needed. Panel drivers shouldn't
be calling these functions themselves.

A recent effort was made to fix as many DRM modeset drivers as
possible [1] [2] [3] and most drivers are fixed now.

A grep through mainline for compatible strings used by this driver
indicates that it is used by Rockchip boards. The Rockchip driver
appear to be correctly calling drm_atomic_helper_shutdown() so we can
remove the calls.

[1] https://lore.kernel.org/r/20230901234015.566018-1-dianders@chromium.org
[2] https://lore.kernel.org/r/20230901234202.566951-1-dianders@chromium.org
[3] https://lore.kernel.org/r/20230921192749.1542462-1-dianders@chromium.org

Cc: Brian Norris <briannorris@chromium.org>
Cc: Chris Zhong <zyw@rock-chips.com>
Cc: Nickey Yang <nickey.yang@rock-chips.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240503143327.RFT.v2.13.I6c7c84b1560dd374f6e7e8dc50f419a870d31d31@changeid

-17
-17
drivers/gpu/drm/panel/panel-kingdisplay-kd097d04.c
··· 389 389 struct kingdisplay_panel *kingdisplay = mipi_dsi_get_drvdata(dsi); 390 390 int err; 391 391 392 - err = drm_panel_unprepare(&kingdisplay->base); 393 - if (err < 0) 394 - dev_err(&dsi->dev, "failed to unprepare panel: %d\n", err); 395 - 396 - err = drm_panel_disable(&kingdisplay->base); 397 - if (err < 0) 398 - dev_err(&dsi->dev, "failed to disable panel: %d\n", err); 399 - 400 392 err = mipi_dsi_detach(dsi); 401 393 if (err < 0) 402 394 dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); 403 395 404 396 kingdisplay_panel_del(kingdisplay); 405 - } 406 - 407 - static void kingdisplay_panel_shutdown(struct mipi_dsi_device *dsi) 408 - { 409 - struct kingdisplay_panel *kingdisplay = mipi_dsi_get_drvdata(dsi); 410 - 411 - drm_panel_unprepare(&kingdisplay->base); 412 - drm_panel_disable(&kingdisplay->base); 413 397 } 414 398 415 399 static struct mipi_dsi_driver kingdisplay_panel_driver = { ··· 403 419 }, 404 420 .probe = kingdisplay_panel_probe, 405 421 .remove = kingdisplay_panel_remove, 406 - .shutdown = kingdisplay_panel_shutdown, 407 422 }; 408 423 module_mipi_dsi_driver(kingdisplay_panel_driver); 409 424