drm/i915: Add 965GM pci id update
[linux-drm-fsl-dcu.git] / drivers / char / drm / i915_dma.c
index 99e9d07409e4d5ca7f41ac280324b847d5ffc231..1ba15d9a171ab469ac3ec99c368575feeaf7d7d2 100644 (file)
 #include "i915_drm.h"
 #include "i915_drv.h"
 
-#define IS_I965G(dev) (dev->pdev->device == 0x2972 || \
-                      dev->pdev->device == 0x2982 || \
-                      dev->pdev->device == 0x2992 || \
-                      dev->pdev->device == 0x29A2)
+#define IS_I965G(dev) (dev->pci_device == 0x2972 || \
+                      dev->pci_device == 0x2982 || \
+                      dev->pci_device == 0x2992 || \
+                      dev->pci_device == 0x29A2 || \
+                      dev->pci_device == 0x2A02)
 
 /* Really want an OS-independent resettable timer.  Would like to have
  * this loop run for (eg) 3 sec, but have the timer reset every time
@@ -162,6 +163,7 @@ static int i915_initialize(drm_device_t * dev,
 
        dev_priv->ring.virtual_start = dev_priv->ring.map.handle;
 
+       dev_priv->cpp = init->cpp;
        dev_priv->back_offset = init->back_offset;
        dev_priv->front_offset = init->front_offset;
        dev_priv->current_page = 0;
@@ -260,7 +262,7 @@ static int i915_dma_init(DRM_IOCTL_ARGS)
                retcode = i915_dma_resume(dev);
                break;
        default:
-               retcode = -EINVAL;
+               retcode = DRM_ERR(EINVAL);
                break;
        }
 
@@ -391,7 +393,7 @@ static int i915_emit_box(drm_device_t * dev,
        RING_LOCALS;
 
        if (DRM_COPY_FROM_USER_UNCHECKED(&box, &boxes[i], sizeof(box))) {
-               return EFAULT;
+               return DRM_ERR(EFAULT);
        }
 
        if (box.y2 <= box.y1 || box.x2 <= box.x1 || box.y2 <= 0 || box.x2 <= 0) {
@@ -404,7 +406,7 @@ static int i915_emit_box(drm_device_t * dev,
                BEGIN_LP_RING(4);
                OUT_RING(GFX_OP_DRAWRECT_INFO_I965);
                OUT_RING((box.x1 & 0xffff) | (box.y1 << 16));
-               OUT_RING(((box.x2 - 1) & 0xffff) ((box.y2 - 1) << 16));
+               OUT_RING(((box.x2 - 1) & 0xffff) ((box.y2 - 1) << 16));
                OUT_RING(DR4);
                ADVANCE_LP_RING();
        } else {
@@ -782,6 +784,7 @@ drm_ioctl_desc_t i915_ioctls[] = {
        [DRM_IOCTL_NR(DRM_I915_DESTROY_HEAP)] = { i915_mem_destroy_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY },
        [DRM_IOCTL_NR(DRM_I915_SET_VBLANK_PIPE)] = { i915_vblank_pipe_set, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY },
        [DRM_IOCTL_NR(DRM_I915_GET_VBLANK_PIPE)] = { i915_vblank_pipe_get, DRM_AUTH },
+       [DRM_IOCTL_NR(DRM_I915_VBLANK_SWAP)] = {i915_vblank_swap, DRM_AUTH},
 };
 
 int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);