From: Tomasz Figa <tf...@chromium.org>

We have to disable PSR before shutdown to avoid any asynchronous PSR
code to interfere with Rockchip DRM device shutdown. We use the recently
added analogix_dp_shutdown() function and rockchip_dp_cleanup() we
already use for unregistering PSR at unbind time.

Cc: Kristian H. Kristensen <hoegsb...@chromium.org>
Cc: Brian Norris <briannor...@chromium.org>
Signed-off-by: Tomasz Figa <tf...@chromium.org>
Signed-off-by: Sean Paul <seanp...@chromium.org>
Signed-off-by: Thierry Escande <thierry.esca...@collabora.com>
---
 drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c 
b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
index 8c884f9ce713..bd2ff2c429e9 100644
--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
@@ -415,6 +415,13 @@ static int rockchip_dp_resume(struct device *dev)
 }
 #endif
 
+static void rockchip_dp_shutdown(struct platform_device *pdev)
+{
+       struct rockchip_dp_device *dp = dev_get_drvdata(&pdev->dev);
+
+       analogix_dp_shutdown(dp->adp);
+}
+
 static const struct dev_pm_ops rockchip_dp_pm_ops = {
 #ifdef CONFIG_PM_SLEEP
        .suspend = rockchip_dp_suspend,
@@ -446,6 +453,7 @@ MODULE_DEVICE_TABLE(of, rockchip_dp_dt_ids);
 struct platform_driver rockchip_dp_driver = {
        .probe = rockchip_dp_probe,
        .remove = rockchip_dp_remove,
+       .shutdown = rockchip_dp_shutdown,
        .driver = {
                   .name = "rockchip-dp",
                   .pm = &rockchip_dp_pm_ops,
-- 
2.14.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to