Merge tag 'mac80211-for-davem-2016-06-09' of git://git.kernel.org/pub/scm/linux/kerne...
[cascardo/linux.git] / drivers / gpu / drm / radeon / radeon_display.c
index fcc7483..6a41b49 100644 (file)
@@ -377,7 +377,7 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
 
        /* wakeup userspace */
        if (work->event)
-               drm_send_vblank_event(rdev->ddev, crtc_id, work->event);
+               drm_crtc_send_vblank_event(&radeon_crtc->base, work->event);
 
        spin_unlock_irqrestore(&rdev->ddev->event_lock, flags);
 
@@ -490,7 +490,7 @@ static void radeon_flip_work_func(struct work_struct *__work)
                                 vblank->linedur_ns / 1000, stat, vpos, hpos);
 
        /* do the flip (mmio) */
-       radeon_page_flip(rdev, radeon_crtc->crtc_id, work->base);
+       radeon_page_flip(rdev, radeon_crtc->crtc_id, work->base, work->async);
 
        radeon_crtc->flip_status = RADEON_FLIP_SUBMITTED;
        spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
@@ -525,6 +525,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
        work->rdev = rdev;
        work->crtc_id = radeon_crtc->crtc_id;
        work->event = event;
+       work->async = (page_flip_flags & DRM_MODE_PAGE_FLIP_ASYNC) != 0;
 
        /* schedule unpin of the old buffer */
        old_radeon_fb = to_radeon_framebuffer(crtc->primary->fb);
@@ -1367,7 +1368,7 @@ radeon_user_framebuffer_create(struct drm_device *dev,
        struct radeon_framebuffer *radeon_fb;
        int ret;
 
-       obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]);
+       obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[0]);
        if (obj ==  NULL) {
                dev_err(&dev->pdev->dev, "No GEM object associated to handle 0x%08X, "
                        "can't create framebuffer\n", mode_cmd->handles[0]);
@@ -1630,6 +1631,9 @@ int radeon_modeset_init(struct radeon_device *rdev)
 
        rdev->ddev->mode_config.funcs = &radeon_mode_funcs;
 
+       if (radeon_use_pflipirq == 2 && rdev->family >= CHIP_R600)
+               rdev->ddev->mode_config.async_page_flip = true;
+
        if (ASIC_IS_DCE5(rdev)) {
                rdev->ddev->mode_config.max_width = 16384;
                rdev->ddev->mode_config.max_height = 16384;