[PATCH] drm: rockchip: add shutdown function to poweroff VOP and HDMI TX

From: Johan Jonker
Date: Fri Mar 08 2019 - 13:37:34 EST


When a MK808 TV-stick with RK3066 processor
is given a poweroff command, the monitor doesn't turn blank,
but freezes. The VOP and HDMI share the same power domain,
so that means that both there clocks were never turned off.
Fix the disable of the VOP and HDMI TX by adding an extra
shutdown function that will unbind both drivers.

Signed-off-by: Johan Jonker <jbx6244@xxxxxxxxx>
---
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 8d7a634c1..66a8e99a3 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -448,6 +448,13 @@ static int rockchip_drm_platform_remove(struct platform_device *pdev)
return 0;
}

+static void rockchip_drm_platform_shutdown(struct platform_device *pdev)
+{
+ component_master_del(&pdev->dev, &rockchip_drm_ops);
+
+ rockchip_drm_match_remove(&pdev->dev);
+}
+
static const struct of_device_id rockchip_drm_dt_ids[] = {
{ .compatible = "rockchip,display-subsystem", },
{ /* sentinel */ },
@@ -457,6 +464,7 @@ MODULE_DEVICE_TABLE(of, rockchip_drm_dt_ids);
static struct platform_driver rockchip_drm_platform_driver = {
.probe = rockchip_drm_platform_probe,
.remove = rockchip_drm_platform_remove,
+ .shutdown = rockchip_drm_platform_shutdown,
.driver = {
.name = "rockchip-drm",
.of_match_table = rockchip_drm_dt_ids,
--
2.11.0