summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-core/i915_drv.c1
-rw-r--r--shared-core/i915_dma.c11
-rw-r--r--shared-core/i915_drv.h2
3 files changed, 10 insertions, 4 deletions
diff --git a/linux-core/i915_drv.c b/linux-core/i915_drv.c
index 56e5998f..7fdb0839 100644
--- a/linux-core/i915_drv.c
+++ b/linux-core/i915_drv.c
@@ -79,6 +79,7 @@ static struct drm_driver driver = {
DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_IRQ_VBL |
DRIVER_IRQ_VBL2,
.load = i915_driver_load,
+ .firstopen = i915_driver_firstopen,
.lastclose = i915_driver_lastclose,
.preclose = i915_driver_preclose,
.device_is_agp = i915_driver_device_is_agp,
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c
index c8b7e588..9053f544 100644
--- a/shared-core/i915_dma.c
+++ b/shared-core/i915_dma.c
@@ -195,9 +195,6 @@ static int i915_initialize(drm_device_t * dev,
I915_WRITE(0x02080, dev_priv->dma_status_page);
DRM_DEBUG("Enabled hardware status page\n");
dev->dev_private = (void *)dev_priv;
-#ifdef I915_HAVE_BUFFER
- drm_bo_driver_init(dev);
-#endif
return 0;
}
@@ -949,3 +946,11 @@ int i915_driver_device_is_agp(drm_device_t * dev)
{
return 1;
}
+
+int i915_driver_firstopen(struct drm_device *dev)
+{
+#ifdef I915_HAVE_BUFFER
+ drm_bo_driver_init(dev);
+#endif
+ return 0;
+}
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h
index 662ffad6..e8a7be29 100644
--- a/shared-core/i915_drv.h
+++ b/shared-core/i915_drv.h
@@ -153,7 +153,7 @@ extern long i915_compat_ioctl(struct file *filp, unsigned int cmd,
extern void i915_emit_breadcrumb(drm_device_t *dev);
extern void i915_dispatch_flip(drm_device_t * dev, int pipes, int sync);
extern int i915_emit_mi_flush(drm_device_t *dev, uint32_t flush);
-
+extern int i915_driver_firstopen(struct drm_device *dev);
/* i915_irq.c */
extern int i915_irq_emit(DRM_IOCTL_ARGS);