aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
diff options
context:
space:
mode:
authorYakir Yang <ykk@rock-chips.com>2016-07-24 14:57:44 +0800
committerSean Paul <seanpaul@chromium.org>2016-08-23 11:44:32 -0400
commit5182c1a556d7ff70e28516c4b9250a347b732af0 (patch)
tree60c2d74532993ab5f9623a43ce93d50c05044adf /drivers/gpu/drm/rockchip/rockchip_drm_drv.c
parentdrm/rockchip: vop: export line flag function (diff)
downloadlinux-dev-5182c1a556d7ff70e28516c4b9250a347b732af0.tar.xz
linux-dev-5182c1a556d7ff70e28516c4b9250a347b732af0.zip
drm/rockchip: add an common abstracted PSR driver
The PSR driver have exported four symbols for specific device driver, and it's safe to call them in interrupt context: - rockchip_drm_psr_register() - rockchip_drm_psr_unregister() - rockchip_drm_psr_enable() - rockchip_drm_psr_disable() - rockchip_drm_psr_flush() Encoder driver should call the register/unregister interfaces to hook itself into common PSR driver, encoder have implement the 'psr_set' callback which use the set PSR state in hardware side. Crtc driver would call the enable/disable interfaces when vblank is enable/disable, after that the common PSR driver would call the encoder registered callback to set the PSR state. Fb driver would call the flush interface in 'fb->dirty' callback, this helper function would force all PSR enabled encoders to exit from PSR for 3 seconds. Signed-off-by: Yakir Yang <ykk@rock-chips.com> [seanpaul removed leftover psr_enabled/psr_work kruft from drm_vop.c] Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/gpu/drm/rockchip/rockchip_drm_drv.c')
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_drv.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index a822d49a255a..b43fe5d93828 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -156,6 +156,9 @@ static int rockchip_drm_bind(struct device *dev)
drm_dev->dev_private = private;
+ INIT_LIST_HEAD(&private->psr_list);
+ mutex_init(&private->psr_list_mutex);
+
drm_mode_config_init(drm_dev);
rockchip_drm_mode_config_init(drm_dev);