Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
authorAlan Hourihane <alanh@fairlite.demon.co.uk>
Fri, 18 May 2007 12:48:56 +0000 (13:48 +0100)
committerAlan Hourihane <alanh@fairlite.demon.co.uk>
Fri, 18 May 2007 12:48:56 +0000 (13:48 +0100)
Conflicts:

shared-core/i915_dma.c

1  2 
linux-core/drmP.h
linux-core/drm_bo.c
linux-core/drm_drv.c
linux-core/drm_objects.h
shared-core/drm.h
shared-core/i915_dma.c
shared-core/i915_irq.c

Simple merge
Simple merge
Simple merge
Simple merge
@@@ -796,9 -788,9 +789,10 @@@ typedef struct drm_fence_arg 
  
  typedef enum {
        drm_bo_type_dc,
 +      drm_bo_type_kernel, /* for initial kernel allocations */
        drm_bo_type_user,
-       drm_bo_type_fake
+       drm_bo_type_fake,
+       drm_bo_type_kernel, /* for initial kernel allocations */
  }drm_bo_type_t;
  
  
@@@ -98,16 -121,49 +98,19 @@@ static int i915_initialize(drm_device_
                           drm_i915_private_t * dev_priv,
                           drm_i915_init_t * init)
  {
 -      memset(dev_priv, 0, sizeof(drm_i915_private_t));
--
-       /* reset ring pointers */
-       I915_WRITE(LP_RING + RING_LEN, 0);
-       mb();
+       dev_priv->sarea = drm_getsarea(dev);
+       if (!dev_priv->sarea) {
+               DRM_ERROR("can not find sarea!\n");
+               dev->dev_private = (void *)dev_priv;
+               i915_dma_cleanup(dev);
+               return DRM_ERR(EINVAL);
+       }
  
 -      dev_priv->mmio_map = drm_core_findmap(dev, init->mmio_offset);
 -      if (!dev_priv->mmio_map) {
 -              dev->dev_private = (void *)dev_priv;
 -              i915_dma_cleanup(dev);
 -              DRM_ERROR("can not find mmio map!\n");
 -              return DRM_ERR(EINVAL);
 -      }
 -
 -      dev_priv->sarea_priv = (drm_i915_sarea_t *)
 -          ((u8 *) dev_priv->sarea->handle + init->sarea_priv_offset);
 -
 -      dev_priv->ring.Start = init->ring_start;
 -      dev_priv->ring.End = init->ring_end;
 -      dev_priv->ring.Size = init->ring_size;
 -      dev_priv->ring.tail_mask = dev_priv->ring.Size - 1;
 -
 -      dev_priv->ring.map.offset = init->ring_start;
 -      dev_priv->ring.map.size = init->ring_size;
 -      dev_priv->ring.map.type = 0;
 -      dev_priv->ring.map.flags = 0;
 -      dev_priv->ring.map.mtrr = 0;
 +      memset((void *)(dev_priv->ring.virtual_start), 0, dev_priv->ring.Size);
  
 -      drm_core_ioremap(&dev_priv->ring.map, dev);
 +      I915_WRITE(LP_RING + RING_START, dev_priv->ring.Start);
 +      I915_WRITE(LP_RING + RING_LEN, ((dev_priv->ring.Size - 4096) & RING_NR_PAGES) | (RING_NO_REPORT | RING_VALID));
  
 -      if (dev_priv->ring.map.handle == NULL) {
 -              dev->dev_private = (void *)dev_priv;
 -              i915_dma_cleanup(dev);
 -              DRM_ERROR("can not ioremap virtual address for"
 -                        " ring buffer\n");
 -              return DRM_ERR(ENOMEM);
 -      }
 -
 -      dev_priv->ring.virtual_start = dev_priv->ring.map.handle;
  
        dev_priv->cpp = init->cpp;
        dev_priv->sarea_priv->pf_current_page = 0;
Simple merge