Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
[pandora-kernel.git] / drivers / gpu / drm / vmwgfx / vmwgfx_drv.c
index ddb5abd..dff8fc7 100644 (file)
@@ -24,6 +24,7 @@
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
+#include <linux/module.h>
 
 #include "drmP.h"
 #include "vmwgfx_drv.h"
 #define DRM_IOCTL_VMW_FENCE_UNREF                              \
        DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_FENCE_UNREF,         \
                 struct drm_vmw_fence_arg)
+#define DRM_IOCTL_VMW_FENCE_EVENT                              \
+       DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_FENCE_EVENT,         \
+                struct drm_vmw_fence_event_arg)
 #define DRM_IOCTL_VMW_PRESENT                                  \
        DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_PRESENT,             \
                 struct drm_vmw_present_arg)
 #define DRM_IOCTL_VMW_PRESENT_READBACK                         \
        DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_PRESENT_READBACK,    \
                 struct drm_vmw_present_readback_arg)
+#define DRM_IOCTL_VMW_UPDATE_LAYOUT                            \
+       DRM_IOW(DRM_COMMAND_BASE + DRM_VMW_UPDATE_LAYOUT,       \
+                struct drm_vmw_update_layout_arg)
 
 /**
  * The core DRM version of this macro doesn't account for
@@ -150,6 +157,9 @@ static struct drm_ioctl_desc vmw_ioctls[] = {
                      DRM_AUTH | DRM_UNLOCKED),
        VMW_IOCTL_DEF(VMW_FENCE_UNREF, vmw_fence_obj_unref_ioctl,
                      DRM_AUTH | DRM_UNLOCKED),
+       VMW_IOCTL_DEF(VMW_FENCE_EVENT,
+                     vmw_fence_event_ioctl,
+                     DRM_AUTH | DRM_UNLOCKED),
        VMW_IOCTL_DEF(VMW_GET_3D_CAP, vmw_get_cap_3d_ioctl,
                      DRM_AUTH | DRM_UNLOCKED),
 
@@ -159,6 +169,9 @@ static struct drm_ioctl_desc vmw_ioctls[] = {
        VMW_IOCTL_DEF(VMW_PRESENT_READBACK,
                      vmw_present_readback_ioctl,
                      DRM_MASTER | DRM_AUTH | DRM_UNLOCKED),
+       VMW_IOCTL_DEF(VMW_UPDATE_LAYOUT,
+                     vmw_kms_update_layout_ioctl,
+                     DRM_MASTER | DRM_UNLOCKED),
 };
 
 static struct pci_device_id vmw_pci_id_list[] = {
@@ -238,7 +251,7 @@ static void vmw_dummy_query_bo_prepare(struct vmw_private *dev_priv)
 
        ttm_bo_reserve(bo, false, false, false, 0);
        spin_lock(&bdev->fence_lock);
-       ret = ttm_bo_wait(bo, false, false, false, TTM_USAGE_READWRITE);
+       ret = ttm_bo_wait(bo, false, false, false);
        spin_unlock(&bdev->fence_lock);
        if (unlikely(ret != 0))
                (void) vmw_fallback_wait(dev_priv, false, true, 0, false,
@@ -1063,6 +1076,8 @@ static struct drm_driver driver = {
        .irq_uninstall = vmw_irq_uninstall,
        .irq_handler = vmw_irq_handler,
        .get_vblank_counter = vmw_get_vblank_counter,
+       .enable_vblank = vmw_enable_vblank,
+       .disable_vblank = vmw_disable_vblank,
        .reclaim_buffers_locked = NULL,
        .ioctls = vmw_ioctls,
        .num_ioctls = DRM_ARRAY_SIZE(vmw_ioctls),
@@ -1079,7 +1094,8 @@ static struct drm_driver driver = {
                 .release = drm_release,
                 .unlocked_ioctl = vmw_unlocked_ioctl,
                 .mmap = vmw_mmap,
-                .poll = drm_poll,
+                .poll = vmw_fops_poll,
+                .read = vmw_fops_read,
                 .fasync = drm_fasync,
 #if defined(CONFIG_COMPAT)
                 .compat_ioctl = drm_compat_ioctl,