Commit c38896ca authored by Douglas Anderson's avatar Douglas Anderson Committed by Maxime Ripard

drm/mediatek: Call drm_atomic_helper_shutdown() at shutdown time

Based on grepping through the source code this driver appears to be
missing a call to drm_atomic_helper_shutdown() at system shutdown
time. Among other things, this means that if a panel is in use that it
won't be cleanly powered off at system shutdown time.

The fact that we should call drm_atomic_helper_shutdown() in the case
of OS shutdown/restart comes straight out of the kernel doc "driver
instance overview" in drm_drv.c.

This driver users the component model and shutdown happens in the base
driver. The "drvdata" for this driver will always be valid if
shutdown() is called and as of commit 2a073968
("drm/atomic-helper: drm_atomic_helper_shutdown(NULL) should be a
noop") we don't need to confirm that "drm" is non-NULL.
Suggested-by: default avatarMaxime Ripard <mripard@kernel.org>
Reviewed-by: default avatarMaxime Ripard <mripard@kernel.org>
Reviewed-by: default avatarFei Shao <fshao@chromium.org>
Tested-by: default avatarFei Shao <fshao@chromium.org>
Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240611102744.v2.1.I2b014f90afc4729b6ecc7b5ddd1f6dedcea4625b@changeid
parent 0320ca14
...@@ -952,6 +952,13 @@ static void mtk_drm_remove(struct platform_device *pdev) ...@@ -952,6 +952,13 @@ static void mtk_drm_remove(struct platform_device *pdev)
of_node_put(private->comp_node[i]); of_node_put(private->comp_node[i]);
} }
static void mtk_drm_shutdown(struct platform_device *pdev)
{
struct mtk_drm_private *private = platform_get_drvdata(pdev);
drm_atomic_helper_shutdown(private->drm);
}
static int mtk_drm_sys_prepare(struct device *dev) static int mtk_drm_sys_prepare(struct device *dev)
{ {
struct mtk_drm_private *private = dev_get_drvdata(dev); struct mtk_drm_private *private = dev_get_drvdata(dev);
...@@ -983,6 +990,7 @@ static const struct dev_pm_ops mtk_drm_pm_ops = { ...@@ -983,6 +990,7 @@ static const struct dev_pm_ops mtk_drm_pm_ops = {
static struct platform_driver mtk_drm_platform_driver = { static struct platform_driver mtk_drm_platform_driver = {
.probe = mtk_drm_probe, .probe = mtk_drm_probe,
.remove_new = mtk_drm_remove, .remove_new = mtk_drm_remove,
.shutdown = mtk_drm_shutdown,
.driver = { .driver = {
.name = "mediatek-drm", .name = "mediatek-drm",
.pm = &mtk_drm_pm_ops, .pm = &mtk_drm_pm_ops,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment