aboutsummaryrefslogtreecommitdiff
path: root/shared-core/i915_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared-core/i915_init.c')
-rw-r--r--shared-core/i915_init.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/shared-core/i915_init.c b/shared-core/i915_init.c
index fd102b35..065afcdf 100644
--- a/shared-core/i915_init.c
+++ b/shared-core/i915_init.c
@@ -109,18 +109,18 @@ int i915_probe_agp(struct pci_dev *pdev, unsigned long *aperture_size,
* - allocate initial config memory
* - setup the DRM framebuffer with the allocated memory
*/
-int i915_driver_load(drm_device_t *dev, unsigned long flags)
+int i915_driver_load(struct drm_device *dev, unsigned long flags)
{
- drm_i915_private_t *dev_priv;
+ struct drm_i915_private *dev_priv;
unsigned long agp_size, prealloc_size;
unsigned long sareapage;
int size, ret;
- dev_priv = drm_alloc(sizeof(drm_i915_private_t), DRM_MEM_DRIVER);
+ dev_priv = drm_alloc(sizeof(struct drm_i915_private), DRM_MEM_DRIVER);
if (dev_priv == NULL)
- return DRM_ERR(ENOMEM);
+ return -ENOMEM;
- memset(dev_priv, 0, sizeof(drm_i915_private_t));
+ memset(dev_priv, 0, sizeof(struct drm_i915_private));
dev->dev_private = (void *)dev_priv;
// dev_priv->flags = flags;
@@ -167,7 +167,7 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)
init_waitqueue_head(&dev->lock.lock_queue);
/* FIXME: assume sarea_priv is right after SAREA */
- dev_priv->sarea_priv = dev_priv->sarea->handle + sizeof(drm_sarea_t);
+ dev_priv->sarea_priv = dev_priv->sarea->handle + sizeof(struct drm_sarea);
/*
* Initialize the memory manager for local and AGP space
@@ -186,14 +186,19 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)
ret = drm_buffer_object_create(dev, size, drm_bo_type_kernel,
DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE |
DRM_BO_FLAG_MEM_VRAM |
- DRM_BO_FLAG_NO_EVICT,
- DRM_BO_HINT_DONT_FENCE, 0x1, 0,
+ DRM_BO_HINT_DONT_FENCE, 0, 0x1, 0,
&dev_priv->ring_buffer);
if (ret < 0) {
DRM_ERROR("Unable to allocate ring buffer\n");
return -EINVAL;
}
+ ret = drm_bo_set_pin(dev, dev_priv->ring_buffer, 1);
+ if (ret < 0) {
+ DRM_ERROR("Unable to pin ring buffer\n");
+ return -EINVAL;
+ }
+
/* remap the buffer object properly */
dev_priv->ring.Start = dev_priv->ring_buffer->offset;
dev_priv->ring.End = dev_priv->ring.Start + size;
@@ -236,7 +241,7 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)
dev->dev_private = (void *)dev_priv;
i915_dma_cleanup(dev);
DRM_ERROR("Can not allocate hardware status page\n");
- return DRM_ERR(ENOMEM);
+ return -ENOMEM;
}
dev_priv->hw_status_page = dev_priv->status_page_dmah->vaddr;
dev_priv->dma_status_page = dev_priv->status_page_dmah->busaddr;
@@ -253,9 +258,9 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)
return 0;
}
-int i915_driver_unload(drm_device_t *dev)
+int i915_driver_unload(struct drm_device *dev)
{
- drm_i915_private_t *dev_priv = dev->dev_private;
+ struct drm_i915_private *dev_priv = dev->dev_private;
if (dev_priv->ring.virtual_start) {
drm_core_ioremapfree(&dev_priv->ring.map, dev);
@@ -305,18 +310,20 @@ int i915_driver_unload(drm_device_t *dev)
return 0;
}
-void i915_driver_lastclose(drm_device_t * dev)
+void i915_driver_lastclose(struct drm_device *dev)
{
- drm_i915_private_t *dev_priv = dev->dev_private;
+ struct drm_i915_private *dev_priv = dev->dev_private;
+
+ i915_do_cleanup_pageflip(dev);
i915_mem_takedown(&(dev_priv->agp_heap));
i915_dma_cleanup(dev);
}
-void i915_driver_preclose(drm_device_t * dev, DRMFILE filp)
+void i915_driver_preclose(struct drm_device *dev, struct drm_file *filp)
{
- drm_i915_private_t *dev_priv = dev->dev_private;
+ struct drm_i915_private *dev_priv = dev->dev_private;
i915_mem_release(dev, filp, dev_priv->agp_heap);
}