vmwgfx: Use "Virtual" connectors and encoders rather than "LVDS".
[pandora-kernel.git] / drivers / gpu / drm / vmwgfx / vmwgfx_scrn.c
index e74b8e3..0660d3c 100644 (file)
@@ -168,7 +168,7 @@ static int vmw_sou_fifo_create(struct vmw_private *dev_priv,
        cmd->obj.root.y = y;
 
        /* Ok to assume that buffer is pinned in vram */
-       vmw_dmabuf_get_guest_ptr(sou->buffer, &cmd->obj.backingStore.ptr);
+       vmw_bo_get_guest_ptr(&sou->buffer->base, &cmd->obj.backingStore.ptr);
        cmd->obj.backingStore.pitch = mode->hdisplay * 4;
 
        vmw_fifo_commit(dev_priv, fifo_size);
@@ -479,11 +479,11 @@ static int vmw_sou_init(struct vmw_private *dev_priv, unsigned unit)
        sou->base.pref_mode = NULL;
 
        drm_connector_init(dev, connector, &vmw_legacy_connector_funcs,
-                          DRM_MODE_CONNECTOR_LVDS);
+                          DRM_MODE_CONNECTOR_VIRTUAL);
        connector->status = vmw_du_connector_detect(connector, true);
 
        drm_encoder_init(dev, encoder, &vmw_screen_object_encoder_funcs,
-                        DRM_MODE_ENCODER_LVDS);
+                        DRM_MODE_ENCODER_VIRTUAL);
        drm_mode_connector_attach_encoder(connector, encoder);
        encoder->possible_crtcs = (1 << unit);
        encoder->possible_clones = 0;
@@ -502,8 +502,7 @@ static int vmw_sou_init(struct vmw_private *dev_priv, unsigned unit)
 int vmw_kms_init_screen_object_display(struct vmw_private *dev_priv)
 {
        struct drm_device *dev = dev_priv->dev;
-       int i;
-       int ret;
+       int i, ret;
 
        if (dev_priv->sou_priv) {
                DRM_INFO("sou system already on\n");
@@ -530,7 +529,7 @@ int vmw_kms_init_screen_object_display(struct vmw_private *dev_priv)
        if (unlikely(ret != 0))
                goto err_free;
 
-       ret = drm_mode_create_dirty_info_property(dev_priv->dev);
+       ret = drm_mode_create_dirty_info_property(dev);
        if (unlikely(ret != 0))
                goto err_vblank_cleanup;
 
@@ -545,6 +544,7 @@ err_vblank_cleanup:
        drm_vblank_cleanup(dev);
 err_free:
        kfree(dev_priv->sou_priv);
+       dev_priv->sou_priv = NULL;
 err_no_mem:
        return ret;
 }
@@ -553,10 +553,11 @@ int vmw_kms_close_screen_object_display(struct vmw_private *dev_priv)
 {
        struct drm_device *dev = dev_priv->dev;
 
-       drm_vblank_cleanup(dev);
        if (!dev_priv->sou_priv)
                return -ENOSYS;
 
+       drm_vblank_cleanup(dev);
+
        if (!list_empty(&dev_priv->sou_priv->active))
                DRM_ERROR("Still have active outputs when unloading driver");