From: Tomasz Figa <tfiga@xxxxxxxxxxxx> 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 <hoegsberg@xxxxxxxxxxxx> Cc: Brian Norris <briannorris@xxxxxxxxxxxx> Signed-off-by: Tomasz Figa <tfiga@xxxxxxxxxxxx> Signed-off-by: Sean Paul <seanpaul@xxxxxxxxxxxx> Signed-off-by: Thierry Escande <thierry.escande@xxxxxxxxxxxxx> --- 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel