aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaixia Shi <hshi@chromium.org>2015-01-30 13:57:27 -0500
committerDave Airlie <airlied@gmail.com>2015-01-30 19:12:23 -0500
commit6c3912d69b23e33e8f8b9479cd7bf5331345615d (patch)
tree70e89f9a990eb01e05df33c26cca185541138219
parent56a8620a15bbc05d8ef57ace7fc769372de1178a (diff)
drm/udl: properly set active_16 flag in udl_crtc_page_flip(). (v2)
When page flipping, we need to mark the new fb as active and unmark the active flag for the old fb (if different). Signed-off-by: Haixia Shi <hshi@chromium.org> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Dave Airlie <airlied@gmail.com>
-rw-r--r--drivers/gpu/drm/udl/udl_modeset.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index 1701f1dfb23f..677190a65e82 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -340,11 +340,11 @@ static int udl_crtc_mode_set(struct drm_crtc *crtc,
340 340
341 wrptr = udl_dummy_render(wrptr); 341 wrptr = udl_dummy_render(wrptr);
342 342
343 ufb->active_16 = true;
344 if (old_fb) { 343 if (old_fb) {
345 struct udl_framebuffer *uold_fb = to_udl_fb(old_fb); 344 struct udl_framebuffer *uold_fb = to_udl_fb(old_fb);
346 uold_fb->active_16 = false; 345 uold_fb->active_16 = false;
347 } 346 }
347 ufb->active_16 = true;
348 udl->mode_buf_len = wrptr - buf; 348 udl->mode_buf_len = wrptr - buf;
349 349
350 /* damage all of it */ 350 /* damage all of it */
@@ -373,6 +373,13 @@ static int udl_crtc_page_flip(struct drm_crtc *crtc,
373 struct drm_device *dev = crtc->dev; 373 struct drm_device *dev = crtc->dev;
374 unsigned long flags; 374 unsigned long flags;
375 375
376 struct drm_framebuffer *old_fb = crtc->primary->fb;
377 if (old_fb) {
378 struct udl_framebuffer *uold_fb = to_udl_fb(old_fb);
379 uold_fb->active_16 = false;
380 }
381 ufb->active_16 = true;
382
376 udl_handle_damage(ufb, 0, 0, fb->width, fb->height); 383 udl_handle_damage(ufb, 0, 0, fb->width, fb->height);
377 384
378 spin_lock_irqsave(&dev->event_lock, flags); 385 spin_lock_irqsave(&dev->event_lock, flags);