diff options
author | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2014-11-25 13:18:34 -0500 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2015-01-25 07:28:05 -0500 |
commit | 8b9c45050348ba2dc2d74b2755bf2cb629a42a8f (patch) | |
tree | bee39b559f58ba7cded997f4fa602868113feb05 /drivers/gpu/drm/exynos | |
parent | 0e0a649faa27333efea9cce14bff9bab75230f25 (diff) |
drm/exynos: call exynos_update_plane() directly on page flips
Avoid an extra call to exynos_drm_crtc_mode_set_commit() that only calls
exynos_update_plane().
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_crtc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index 4c8bd4d1e861..185dabe4e2b7 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c | |||
@@ -176,6 +176,7 @@ static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc, | |||
176 | struct exynos_drm_private *dev_priv = dev->dev_private; | 176 | struct exynos_drm_private *dev_priv = dev->dev_private; |
177 | struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); | 177 | struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); |
178 | struct drm_framebuffer *old_fb = crtc->primary->fb; | 178 | struct drm_framebuffer *old_fb = crtc->primary->fb; |
179 | unsigned int crtc_w, crtc_h; | ||
179 | int ret = -EINVAL; | 180 | int ret = -EINVAL; |
180 | 181 | ||
181 | /* when the page flip is requested, crtc's dpms should be on */ | 182 | /* when the page flip is requested, crtc's dpms should be on */ |
@@ -207,8 +208,11 @@ static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc, | |||
207 | spin_unlock_irq(&dev->event_lock); | 208 | spin_unlock_irq(&dev->event_lock); |
208 | 209 | ||
209 | crtc->primary->fb = fb; | 210 | crtc->primary->fb = fb; |
210 | ret = exynos_drm_crtc_mode_set_commit(crtc, crtc->x, crtc->y, | 211 | crtc_w = fb->width - crtc->x; |
211 | NULL); | 212 | crtc_h = fb->height - crtc->y; |
213 | ret = exynos_update_plane(crtc->primary, crtc, fb, 0, 0, | ||
214 | crtc_w, crtc_h, crtc->x, crtc->y, | ||
215 | crtc_w, crtc_h); | ||
212 | if (ret) { | 216 | if (ret) { |
213 | crtc->primary->fb = old_fb; | 217 | crtc->primary->fb = old_fb; |
214 | 218 | ||