aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2015-12-24 03:24:35 -0500
committerInki Dae <daeinki@gmail.com>2016-01-12 10:16:38 -0500
commitd619894cf5c6a74a2e53a4701938dd4dd6736c60 (patch)
treef7e0ed39651a9f978cedaf67fc91cf58560e1393
parent3dbaab16c4cddbbb03ad7ed1a0285605a9cc4016 (diff)
drm/exynos: crtc: do not wait for the scanout completion
This patch removes exynos_drm_crtc_complete_scanout function call which makes sure for overlay data to be updated to real hardware when drm driver is released. With atomic modeset support, it doesn't need the funtion anymore because atomic modeset interface makes sure that. Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_crtc.c23
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_crtc.h1
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fb.c3
3 files changed, 0 insertions, 27 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
index 5acaecba450a..cd9498164dc1 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
@@ -203,29 +203,6 @@ void exynos_drm_crtc_finish_update(struct exynos_drm_crtc *exynos_crtc,
203 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); 203 spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
204} 204}
205 205
206void exynos_drm_crtc_complete_scanout(struct drm_framebuffer *fb)
207{
208 struct exynos_drm_crtc *exynos_crtc;
209 struct drm_device *dev = fb->dev;
210 struct drm_crtc *crtc;
211
212 /*
213 * make sure that overlay data are updated to real hardware
214 * for all encoders.
215 */
216 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
217 exynos_crtc = to_exynos_crtc(crtc);
218
219 /*
220 * wait for vblank interrupt
221 * - this makes sure that overlay data are updated to
222 * real hardware.
223 */
224 if (exynos_crtc->ops->wait_for_vblank)
225 exynos_crtc->ops->wait_for_vblank(exynos_crtc);
226 }
227}
228
229int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev, 206int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev,
230 enum exynos_drm_output_type out_type) 207 enum exynos_drm_output_type out_type)
231{ 208{
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.h b/drivers/gpu/drm/exynos/exynos_drm_crtc.h
index f9f365bd0257..6a581a8af465 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_crtc.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.h
@@ -28,7 +28,6 @@ void exynos_drm_crtc_disable_vblank(struct drm_device *dev, unsigned int pipe);
28void exynos_drm_crtc_wait_pending_update(struct exynos_drm_crtc *exynos_crtc); 28void exynos_drm_crtc_wait_pending_update(struct exynos_drm_crtc *exynos_crtc);
29void exynos_drm_crtc_finish_update(struct exynos_drm_crtc *exynos_crtc, 29void exynos_drm_crtc_finish_update(struct exynos_drm_crtc *exynos_crtc,
30 struct exynos_drm_plane *exynos_plane); 30 struct exynos_drm_plane *exynos_plane);
31void exynos_drm_crtc_complete_scanout(struct drm_framebuffer *fb);
32 31
33/* This function gets pipe value to crtc device matched with out_type. */ 32/* This function gets pipe value to crtc device matched with out_type. */
34int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev, 33int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index cbbb1a86e70a..d614194644c8 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -71,9 +71,6 @@ static void exynos_drm_fb_destroy(struct drm_framebuffer *fb)
71 struct exynos_drm_fb *exynos_fb = to_exynos_fb(fb); 71 struct exynos_drm_fb *exynos_fb = to_exynos_fb(fb);
72 unsigned int i; 72 unsigned int i;
73 73
74 /* make sure that overlay data are updated before relesing fb. */
75 exynos_drm_crtc_complete_scanout(fb);
76
77 drm_framebuffer_cleanup(fb); 74 drm_framebuffer_cleanup(fb);
78 75
79 for (i = 0; i < ARRAY_SIZE(exynos_fb->exynos_gem); i++) { 76 for (i = 0; i < ARRAY_SIZE(exynos_fb->exynos_gem); i++) {