Merge tag 'nfs-for-4.8-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[deliverable/linux.git] / drivers / gpu / drm / qxl / qxl_display.c
index 030409a3ee4e014ab512b5141d4b4e0ededbfe5d..3aef12742a53b895fac7be63651643d5db9325e2 100644 (file)
@@ -221,7 +221,6 @@ static int qxl_crtc_page_flip(struct drm_crtc *crtc,
 {
        struct drm_device *dev = crtc->dev;
        struct qxl_device *qdev = dev->dev_private;
-       struct qxl_crtc *qcrtc = to_qxl_crtc(crtc);
        struct qxl_framebuffer *qfb_src = to_qxl_framebuffer(fb);
        struct qxl_framebuffer *qfb_old = to_qxl_framebuffer(crtc->primary->fb);
        struct qxl_bo *bo_old = gem_to_qxl_bo(qfb_old->obj);
@@ -252,14 +251,14 @@ static int qxl_crtc_page_flip(struct drm_crtc *crtc,
        qxl_draw_dirty_fb(qdev, qfb_src, bo, 0, 0,
                          &norect, one_clip_rect, inc);
 
-       drm_vblank_get(dev, qcrtc->index);
+       drm_crtc_vblank_get(crtc);
 
        if (event) {
                spin_lock_irqsave(&dev->event_lock, flags);
-               drm_send_vblank_event(dev, qcrtc->index, event);
+               drm_crtc_send_vblank_event(crtc, event);
                spin_unlock_irqrestore(&dev->event_lock, flags);
        }
-       drm_vblank_put(dev, qcrtc->index);
+       drm_crtc_vblank_put(crtc);
 
        ret = qxl_bo_reserve(bo, false);
        if (!ret) {
@@ -318,7 +317,7 @@ static int qxl_crtc_cursor_set2(struct drm_crtc *crtc,
        if (!handle)
                return qxl_hide_cursor(qdev);
 
-       obj = drm_gem_object_lookup(crtc->dev, file_priv, handle);
+       obj = drm_gem_object_lookup(file_priv, handle);
        if (!obj) {
                DRM_ERROR("cannot find cursor object\n");
                return -ENOENT;
@@ -465,12 +464,11 @@ static const struct drm_crtc_funcs qxl_crtc_funcs = {
        .page_flip = qxl_crtc_page_flip,
 };
 
-static void qxl_user_framebuffer_destroy(struct drm_framebuffer *fb)
+void qxl_user_framebuffer_destroy(struct drm_framebuffer *fb)
 {
        struct qxl_framebuffer *qxl_fb = to_qxl_framebuffer(fb);
 
-       if (qxl_fb->obj)
-               drm_gem_object_unreference_unlocked(qxl_fb->obj);
+       drm_gem_object_unreference_unlocked(qxl_fb->obj);
        drm_framebuffer_cleanup(fb);
        kfree(qxl_fb);
 }
@@ -527,12 +525,13 @@ int
 qxl_framebuffer_init(struct drm_device *dev,
                     struct qxl_framebuffer *qfb,
                     const struct drm_mode_fb_cmd2 *mode_cmd,
-                    struct drm_gem_object *obj)
+                    struct drm_gem_object *obj,
+                    const struct drm_framebuffer_funcs *funcs)
 {
        int ret;
 
        qfb->obj = obj;
-       ret = drm_framebuffer_init(dev, &qfb->base, &qxl_fb_funcs);
+       ret = drm_framebuffer_init(dev, &qfb->base, funcs);
        if (ret) {
                qfb->obj = NULL;
                return ret;
@@ -729,7 +728,6 @@ static int qdev_crtc_init(struct drm_device *dev, int crtc_id)
 
        drm_crtc_init(dev, &qxl_crtc->base, &qxl_crtc_funcs);
        qxl_crtc->index = crtc_id;
-       drm_mode_crtc_set_gamma_size(&qxl_crtc->base, 256);
        drm_crtc_helper_add(&qxl_crtc->base, &qxl_crtc_helper_funcs);
        return 0;
 }
@@ -993,13 +991,15 @@ qxl_user_framebuffer_create(struct drm_device *dev,
        struct qxl_framebuffer *qxl_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)
+               return NULL;
 
        qxl_fb = kzalloc(sizeof(*qxl_fb), GFP_KERNEL);
        if (qxl_fb == NULL)
                return NULL;
 
-       ret = qxl_framebuffer_init(dev, qxl_fb, mode_cmd, obj);
+       ret = qxl_framebuffer_init(dev, qxl_fb, mode_cmd, obj, &qxl_fb_funcs);
        if (ret) {
                kfree(qxl_fb);
                drm_gem_object_unreference_unlocked(obj);
This page took 0.029509 seconds and 5 git commands to generate.