|
@@ -152,7 +152,7 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init)
|
|
{
|
|
{
|
|
drm_i915_private_t *dev_priv = dev->dev_private;
|
|
drm_i915_private_t *dev_priv = dev->dev_private;
|
|
struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
|
|
struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
|
|
- struct intel_ring_buffer *ring = LP_RING(dev_priv);
|
|
|
|
|
|
+ int ret;
|
|
|
|
|
|
master_priv->sarea = drm_getsarea(dev);
|
|
master_priv->sarea = drm_getsarea(dev);
|
|
if (master_priv->sarea) {
|
|
if (master_priv->sarea) {
|
|
@@ -163,33 +163,22 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init)
|
|
}
|
|
}
|
|
|
|
|
|
if (init->ring_size != 0) {
|
|
if (init->ring_size != 0) {
|
|
- if (ring->obj != NULL) {
|
|
|
|
|
|
+ if (LP_RING(dev_priv)->obj != NULL) {
|
|
i915_dma_cleanup(dev);
|
|
i915_dma_cleanup(dev);
|
|
DRM_ERROR("Client tried to initialize ringbuffer in "
|
|
DRM_ERROR("Client tried to initialize ringbuffer in "
|
|
"GEM mode\n");
|
|
"GEM mode\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
- ring->size = init->ring_size;
|
|
|
|
-
|
|
|
|
- ring->map.offset = init->ring_start;
|
|
|
|
- ring->map.size = init->ring_size;
|
|
|
|
- ring->map.type = 0;
|
|
|
|
- ring->map.flags = 0;
|
|
|
|
- ring->map.mtrr = 0;
|
|
|
|
-
|
|
|
|
- drm_core_ioremap_wc(&ring->map, dev);
|
|
|
|
-
|
|
|
|
- if (ring->map.handle == NULL) {
|
|
|
|
|
|
+ ret = intel_render_ring_init_dri(dev,
|
|
|
|
+ init->ring_start,
|
|
|
|
+ init->ring_size);
|
|
|
|
+ if (ret) {
|
|
i915_dma_cleanup(dev);
|
|
i915_dma_cleanup(dev);
|
|
- DRM_ERROR("can not ioremap virtual address for"
|
|
|
|
- " ring buffer\n");
|
|
|
|
- return -ENOMEM;
|
|
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- ring->virtual_start = ring->map.handle;
|
|
|
|
-
|
|
|
|
dev_priv->cpp = init->cpp;
|
|
dev_priv->cpp = init->cpp;
|
|
dev_priv->back_offset = init->back_offset;
|
|
dev_priv->back_offset = init->back_offset;
|
|
dev_priv->front_offset = init->front_offset;
|
|
dev_priv->front_offset = init->front_offset;
|