diff options
| author | Haixia Shi <hshi@chromium.org> | 2015-01-30 13:57:27 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@gmail.com> | 2015-01-30 19:12:23 -0500 |
| commit | 6c3912d69b23e33e8f8b9479cd7bf5331345615d (patch) | |
| tree | 70e89f9a990eb01e05df33c26cca185541138219 /drivers/gpu/drm/udl | |
| parent | 56a8620a15bbc05d8ef57ace7fc769372de1178a (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>
Diffstat (limited to 'drivers/gpu/drm/udl')
| -rw-r--r-- | drivers/gpu/drm/udl/udl_modeset.c | 9 |
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); |
