1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
From 175a91f2068c5cb4a9be5aa1ea5f1e24e2919bbb Mon Sep 17 00:00:00 2001
From: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>
Date: Fri, 9 Jun 2017 20:13:59 +0900
Subject: [PATCH 2/3] Fix Black blink correction of display
Signed-off-by: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>
---
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
|