From 175a91f2068c5cb4a9be5aa1ea5f1e24e2919bbb Mon Sep 17 00:00:00 2001 From: Yuichi Kusakabe Date: Fri, 9 Jun 2017 20:13:59 +0900 Subject: [PATCH 2/3] Fix Black blink correction of display Signed-off-by: Yuichi Kusakabe --- drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 1 + drivers/gpu/drm/rcar-du/rcar_du_crtc.h | 1 + drivers/gpu/drm/rcar-du/rcar_du_drv.c | 13 ++++--------- drivers/gpu/drm/rcar-du/rcar_du_group.c | 4 ++-- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c index 262d8a8d..ab3bb09 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c @@ -1027,4 +1027,5 @@ void rcar_du_crtc_enable_vblank(struct rcar_du_crtc *rcrtc, bool enable) } else { rcar_du_crtc_clr(rcrtc, DIER, DIER_VBE); } + rcrtc->vblank_enable = enable; } diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.h b/drivers/gpu/drm/rcar-du/rcar_du_crtc.h index 6cdd02e6..19c0d69 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.h +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.h @@ -49,6 +49,7 @@ struct rcar_du_crtc { int lif_enable; void *vpsd_handle; #endif + bool vblank_enable; }; #define to_rcar_crtc(c) container_of(c, struct rcar_du_crtc, crtc) diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index fbb212c..f83501d 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c @@ -517,7 +517,7 @@ static int rcar_du_pm_resume(struct device *dev) return 0; } -#ifdef CONFIG_MACH_FTEN + static int rcar_du_pm_freeze(struct device *dev) { int ret; @@ -546,18 +546,13 @@ static int rcar_du_pm_restore(struct device *dev) return ret; } #endif -#endif + static const struct dev_pm_ops rcar_du_pm_ops = { -#if defined(CONFIG_MACH_FTEN) && defined(CONFIG_HIBERNATION) && \ - defined(CONFIG_PM_SLEEP) - .suspend = rcar_du_pm_suspend, - .resume = rcar_du_pm_resume, + SET_SYSTEM_SLEEP_PM_OPS(rcar_du_pm_suspend, rcar_du_pm_resume) +#ifdef CONFIG_HIBERNATION .freeze = rcar_du_pm_freeze, .thaw = rcar_du_pm_thaw, - .poweroff = rcar_du_pm_suspend, .restore = rcar_du_pm_restore, -#else - SET_SYSTEM_SLEEP_PM_OPS(rcar_du_pm_suspend, rcar_du_pm_resume) #endif }; diff --git a/drivers/gpu/drm/rcar-du/rcar_du_group.c b/drivers/gpu/drm/rcar-du/rcar_du_group.c index 3620040..0e571d4 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_group.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_group.c @@ -151,8 +151,8 @@ void rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start) * when the display controller will have to be restarted. */ if (start) { - if (rgrp->used_crtcs++ != 0) - __rcar_du_group_start_stop(rgrp, false); + rgrp->used_crtcs++; + __rcar_du_group_start_stop(rgrp, false); __rcar_du_group_start_stop(rgrp, true); } else { if (--rgrp->used_crtcs == 0) -- 1.8.3.1