Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs...
[pandora-kernel.git] / drivers / gpu / drm / vmwgfx / vmwgfx_fb.c
index bfab60c..070797b 100644 (file)
@@ -158,10 +158,14 @@ static int vmw_fb_set_par(struct fb_info *info)
 {
        struct vmw_fb_par *par = info->par;
        struct vmw_private *vmw_priv = par->vmw_priv;
+       int ret;
+
+       ret = vmw_kms_write_svga(vmw_priv, info->var.xres, info->var.yres,
+                                info->fix.line_length,
+                                par->bpp, par->depth);
+       if (ret)
+               return ret;
 
-       vmw_kms_write_svga(vmw_priv, info->var.xres, info->var.yres,
-                          info->fix.line_length,
-                          par->bpp, par->depth);
        if (vmw_priv->capabilities & SVGA_CAP_DISPLAY_TOPOLOGY) {
                /* TODO check if pitch and offset changes */
                vmw_write(vmw_priv, SVGA_REG_NUM_GUEST_DISPLAYS, 1);
@@ -405,14 +409,14 @@ int vmw_fb_init(struct vmw_private *vmw_priv)
        struct fb_info *info;
        unsigned initial_width, initial_height;
        unsigned fb_width, fb_height;
-       unsigned fb_bbp, fb_depth, fb_offset, fb_pitch, fb_size;
+       unsigned fb_bpp, fb_depth, fb_offset, fb_pitch, fb_size;
        int ret;
 
        /* XXX These shouldn't be hardcoded. */
        initial_width = 800;
        initial_height = 600;
 
-       fb_bbp = 32;
+       fb_bpp = 32;
        fb_depth = 24;
 
        /* XXX As shouldn't these be as well. */
@@ -422,7 +426,7 @@ int vmw_fb_init(struct vmw_private *vmw_priv)
        initial_width = min(fb_width, initial_width);
        initial_height = min(fb_height, initial_height);
 
-       fb_pitch = fb_width * fb_bbp / 8;
+       fb_pitch = fb_width * fb_bpp / 8;
        fb_size = fb_pitch * fb_height;
        fb_offset = vmw_read(vmw_priv, SVGA_REG_FB_OFFSET);
 
@@ -437,7 +441,7 @@ int vmw_fb_init(struct vmw_private *vmw_priv)
        par = info->par;
        par->vmw_priv = vmw_priv;
        par->depth = fb_depth;
-       par->bpp = fb_bbp;
+       par->bpp = fb_bpp;
        par->vmalloc = NULL;
        par->max_width = fb_width;
        par->max_height = fb_height;
@@ -588,58 +592,6 @@ int vmw_fb_close(struct vmw_private *vmw_priv)
        return 0;
 }
 
-int vmw_dmabuf_from_vram(struct vmw_private *vmw_priv,
-                        struct vmw_dma_buffer *vmw_bo)
-{
-       struct ttm_buffer_object *bo = &vmw_bo->base;
-       int ret = 0;
-
-       ret = ttm_bo_reserve(bo, false, false, false, 0);
-       if (unlikely(ret != 0))
-               return ret;
-
-       ret = ttm_bo_validate(bo, &vmw_sys_placement, false, false, false);
-       ttm_bo_unreserve(bo);
-
-       return ret;
-}
-
-int vmw_dmabuf_to_start_of_vram(struct vmw_private *vmw_priv,
-                               struct vmw_dma_buffer *vmw_bo)
-{
-       struct ttm_buffer_object *bo = &vmw_bo->base;
-       struct ttm_placement ne_placement = vmw_vram_ne_placement;
-       int ret = 0;
-
-       ne_placement.lpfn = bo->num_pages;
-
-       /* interuptable? */
-       ret = ttm_write_lock(&vmw_priv->active_master->lock, false);
-       if (unlikely(ret != 0))
-               return ret;
-
-       ret = ttm_bo_reserve(bo, false, false, false, 0);
-       if (unlikely(ret != 0))
-               goto err_unlock;
-
-       if (bo->mem.mem_type == TTM_PL_VRAM &&
-           bo->mem.start < bo->num_pages &&
-           bo->mem.start > 0)
-               (void) ttm_bo_validate(bo, &vmw_sys_placement, false,
-                                      false, false);
-
-       ret = ttm_bo_validate(bo, &ne_placement, false, false, false);
-
-       /* Could probably bug on */
-       WARN_ON(bo->offset != 0);
-
-       ttm_bo_unreserve(bo);
-err_unlock:
-       ttm_write_unlock(&vmw_priv->active_master->lock);
-
-       return ret;
-}
-
 int vmw_fb_off(struct vmw_private *vmw_priv)
 {
        struct fb_info *info;
@@ -661,7 +613,7 @@ int vmw_fb_off(struct vmw_private *vmw_priv)
        par->bo_ptr = NULL;
        ttm_bo_kunmap(&par->map);
 
-       vmw_dmabuf_from_vram(vmw_priv, par->vmw_bo);
+       vmw_dmabuf_unpin(vmw_priv, par->vmw_bo, false);
 
        return 0;
 }
@@ -687,7 +639,7 @@ int vmw_fb_on(struct vmw_private *vmw_priv)
        /* Make sure that all overlays are stoped when we take over */
        vmw_overlay_stop_all(vmw_priv);
 
-       ret = vmw_dmabuf_to_start_of_vram(vmw_priv, par->vmw_bo);
+       ret = vmw_dmabuf_to_start_of_vram(vmw_priv, par->vmw_bo, true, false);
        if (unlikely(ret != 0)) {
                DRM_ERROR("could not move buffer to start of VRAM\n");
                goto err_no_buffer;