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

drm/panel: boe-himax8279d: 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.

Unfortunately, grepping mainline for this panel's compatible string
shows no hits, so we can't be 100% sure if the DRM modeset driver used
with this panel has been fixed. If it is found that the DRM modeset
driver hasn't been fixed then this patch could be temporarily reverted
until it is.

[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: Jerry Han <jerry.han.hq@gmail.com>
Cc: Jitao Shi <jitao.shi@mediatek.com>
Cc: Rock Wang <rock_wang@himax.com.cn>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240604172305.v3.2.I19086c524d38f28f746befe85cb39ffda9d2f666@changeid
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240604172305.v3.2.I19086c524d38f28f746befe85cb39ffda9d2f666@changeid

authored by

Douglas Anderson and committed by
Neil Armstrong
2ccc698c 12866fdc

-17
-17
drivers/gpu/drm/panel/panel-boe-himax8279d.c
··· 894 894 struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi); 895 895 int err; 896 896 897 - err = drm_panel_disable(&pinfo->base); 898 - if (err < 0) 899 - dev_err(&dsi->dev, "failed to disable panel: %d\n", err); 900 - 901 - err = drm_panel_unprepare(&pinfo->base); 902 - if (err < 0) 903 - dev_err(&dsi->dev, "failed to unprepare panel: %d\n", err); 904 - 905 897 err = mipi_dsi_detach(dsi); 906 898 if (err < 0) 907 899 dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", err); 908 900 909 901 drm_panel_remove(&pinfo->base); 910 - } 911 - 912 - static void panel_shutdown(struct mipi_dsi_device *dsi) 913 - { 914 - struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi); 915 - 916 - drm_panel_disable(&pinfo->base); 917 - drm_panel_unprepare(&pinfo->base); 918 902 } 919 903 920 904 static struct mipi_dsi_driver panel_driver = { ··· 908 924 }, 909 925 .probe = panel_probe, 910 926 .remove = panel_remove, 911 - .shutdown = panel_shutdown, 912 927 }; 913 928 module_mipi_dsi_driver(panel_driver); 914 929