Commit b9094d3a authored by Dave Airlie's avatar Dave Airlie

i810/i830: use drm_core_ioremap instead of drm_ioremap

This makes the i810/i830 use the drm_core_ioremap functions.
Signed-off-by: default avatarDave Airlie <airlied@linux.ie>
parent f239b7b0
...@@ -219,8 +219,7 @@ static int i810_dma_cleanup(drm_device_t * dev) ...@@ -219,8 +219,7 @@ static int i810_dma_cleanup(drm_device_t * dev)
(drm_i810_private_t *) dev->dev_private; (drm_i810_private_t *) dev->dev_private;
if (dev_priv->ring.virtual_start) { if (dev_priv->ring.virtual_start) {
drm_ioremapfree((void *)dev_priv->ring.virtual_start, drm_core_ioremapfree(&dev_priv->ring.map, dev);
dev_priv->ring.Size, dev);
} }
if (dev_priv->hw_status_page) { if (dev_priv->hw_status_page) {
pci_free_consistent(dev->pdev, PAGE_SIZE, pci_free_consistent(dev->pdev, PAGE_SIZE,
...@@ -236,9 +235,9 @@ static int i810_dma_cleanup(drm_device_t * dev) ...@@ -236,9 +235,9 @@ static int i810_dma_cleanup(drm_device_t * dev)
for (i = 0; i < dma->buf_count; i++) { for (i = 0; i < dma->buf_count; i++) {
drm_buf_t *buf = dma->buflist[i]; drm_buf_t *buf = dma->buflist[i];
drm_i810_buf_priv_t *buf_priv = buf->dev_private; drm_i810_buf_priv_t *buf_priv = buf->dev_private;
if (buf_priv->kernel_virtual && buf->total) if (buf_priv->kernel_virtual && buf->total)
drm_ioremapfree(buf_priv->kernel_virtual, drm_core_ioremapfree(&buf_priv->map, dev);
buf->total, dev);
} }
} }
return 0; return 0;
...@@ -311,8 +310,15 @@ static int i810_freelist_init(drm_device_t * dev, drm_i810_private_t * dev_priv) ...@@ -311,8 +310,15 @@ static int i810_freelist_init(drm_device_t * dev, drm_i810_private_t * dev_priv)
*buf_priv->in_use = I810_BUF_FREE; *buf_priv->in_use = I810_BUF_FREE;
buf_priv->kernel_virtual = drm_ioremap(buf->bus_address, buf_priv->map.offset = buf->bus_address;
buf->total, dev); buf_priv->map.size = buf->total;
buf_priv->map.type = _DRM_AGP;
buf_priv->map.flags = 0;
buf_priv->map.mtrr = 0;
drm_core_ioremap(&buf_priv->map, dev);
buf_priv->kernel_virtual = buf_priv->map.handle;
} }
return 0; return 0;
} }
...@@ -363,18 +369,24 @@ static int i810_dma_initialize(drm_device_t * dev, ...@@ -363,18 +369,24 @@ static int i810_dma_initialize(drm_device_t * dev,
dev_priv->ring.End = init->ring_end; dev_priv->ring.End = init->ring_end;
dev_priv->ring.Size = init->ring_size; dev_priv->ring.Size = init->ring_size;
dev_priv->ring.virtual_start = drm_ioremap(dev->agp->base + dev_priv->ring.map.offset = dev->agp->base + init->ring_start;
init->ring_start, dev_priv->ring.map.size = init->ring_size;
init->ring_size, dev); dev_priv->ring.map.type = _DRM_AGP;
dev_priv->ring.map.flags = 0;
dev_priv->ring.map.mtrr = 0;
if (dev_priv->ring.virtual_start == NULL) { drm_core_ioremap(&dev_priv->ring.map, dev);
if (dev_priv->ring.map.handle == NULL) {
dev->dev_private = (void *)dev_priv; dev->dev_private = (void *)dev_priv;
i810_dma_cleanup(dev); i810_dma_cleanup(dev);
DRM_ERROR("can not ioremap virtual address for" DRM_ERROR("can not ioremap virtual address for"
" ring buffer\n"); " ring buffer\n");
return -ENOMEM; return DRM_ERR(ENOMEM);
} }
dev_priv->ring.virtual_start = dev_priv->ring.map.handle;
dev_priv->ring.tail_mask = dev_priv->ring.Size - 1; dev_priv->ring.tail_mask = dev_priv->ring.Size - 1;
dev_priv->w = init->w; dev_priv->w = init->w;
......
...@@ -61,6 +61,7 @@ typedef struct drm_i810_buf_priv { ...@@ -61,6 +61,7 @@ typedef struct drm_i810_buf_priv {
int currently_mapped; int currently_mapped;
void *virtual; void *virtual;
void *kernel_virtual; void *kernel_virtual;
drm_local_map_t map;
} drm_i810_buf_priv_t; } drm_i810_buf_priv_t;
typedef struct _drm_i810_ring_buffer { typedef struct _drm_i810_ring_buffer {
...@@ -72,6 +73,7 @@ typedef struct _drm_i810_ring_buffer { ...@@ -72,6 +73,7 @@ typedef struct _drm_i810_ring_buffer {
int head; int head;
int tail; int tail;
int space; int space;
drm_local_map_t map;
} drm_i810_ring_buffer_t; } drm_i810_ring_buffer_t;
typedef struct drm_i810_private { typedef struct drm_i810_private {
......
...@@ -223,8 +223,7 @@ static int i830_dma_cleanup(drm_device_t * dev) ...@@ -223,8 +223,7 @@ static int i830_dma_cleanup(drm_device_t * dev)
(drm_i830_private_t *) dev->dev_private; (drm_i830_private_t *) dev->dev_private;
if (dev_priv->ring.virtual_start) { if (dev_priv->ring.virtual_start) {
drm_ioremapfree((void *)dev_priv->ring.virtual_start, drm_core_ioremapfree(&dev_priv->ring.map, dev);
dev_priv->ring.Size, dev);
} }
if (dev_priv->hw_status_page) { if (dev_priv->hw_status_page) {
pci_free_consistent(dev->pdev, PAGE_SIZE, pci_free_consistent(dev->pdev, PAGE_SIZE,
...@@ -242,8 +241,7 @@ static int i830_dma_cleanup(drm_device_t * dev) ...@@ -242,8 +241,7 @@ static int i830_dma_cleanup(drm_device_t * dev)
drm_buf_t *buf = dma->buflist[i]; drm_buf_t *buf = dma->buflist[i];
drm_i830_buf_priv_t *buf_priv = buf->dev_private; drm_i830_buf_priv_t *buf_priv = buf->dev_private;
if (buf_priv->kernel_virtual && buf->total) if (buf_priv->kernel_virtual && buf->total)
drm_ioremapfree(buf_priv->kernel_virtual, drm_core_ioremapfree(&buf_priv->map, dev);
buf->total, dev);
} }
} }
return 0; return 0;
...@@ -320,8 +318,14 @@ static int i830_freelist_init(drm_device_t * dev, drm_i830_private_t * dev_priv) ...@@ -320,8 +318,14 @@ static int i830_freelist_init(drm_device_t * dev, drm_i830_private_t * dev_priv)
*buf_priv->in_use = I830_BUF_FREE; *buf_priv->in_use = I830_BUF_FREE;
buf_priv->kernel_virtual = drm_ioremap(buf->bus_address, buf_priv->map.offset = buf->bus_address;
buf->total, dev); buf_priv->map.size = buf->total;
buf_priv->map.type = _DRM_AGP;
buf_priv->map.flags = 0;
buf_priv->map.mtrr = 0;
drm_core_ioremap(&buf_priv->map, dev);
buf_priv->kernel_virtual = buf_priv->map.handle;
} }
return 0; return 0;
} }
...@@ -373,18 +377,24 @@ static int i830_dma_initialize(drm_device_t * dev, ...@@ -373,18 +377,24 @@ static int i830_dma_initialize(drm_device_t * dev,
dev_priv->ring.End = init->ring_end; dev_priv->ring.End = init->ring_end;
dev_priv->ring.Size = init->ring_size; dev_priv->ring.Size = init->ring_size;
dev_priv->ring.virtual_start = drm_ioremap(dev->agp->base + dev_priv->ring.map.offset = dev->agp->base + init->ring_start;
init->ring_start, dev_priv->ring.map.size = init->ring_size;
init->ring_size, dev); dev_priv->ring.map.type = _DRM_AGP;
dev_priv->ring.map.flags = 0;
dev_priv->ring.map.mtrr = 0;
drm_core_ioremap(&dev_priv->ring.map, dev);
if (dev_priv->ring.virtual_start == NULL) { if (dev_priv->ring.map.handle == NULL) {
dev->dev_private = (void *)dev_priv; dev->dev_private = (void *)dev_priv;
i830_dma_cleanup(dev); i830_dma_cleanup(dev);
DRM_ERROR("can not ioremap virtual address for" DRM_ERROR("can not ioremap virtual address for"
" ring buffer\n"); " ring buffer\n");
return -ENOMEM; return DRM_ERR(ENOMEM);
} }
dev_priv->ring.virtual_start = dev_priv->ring.map.handle;
dev_priv->ring.tail_mask = dev_priv->ring.Size - 1; dev_priv->ring.tail_mask = dev_priv->ring.Size - 1;
dev_priv->w = init->w; dev_priv->w = init->w;
......
...@@ -68,6 +68,7 @@ typedef struct drm_i830_buf_priv { ...@@ -68,6 +68,7 @@ typedef struct drm_i830_buf_priv {
int currently_mapped; int currently_mapped;
void __user *virtual; void __user *virtual;
void *kernel_virtual; void *kernel_virtual;
drm_local_map_t map;
} drm_i830_buf_priv_t; } drm_i830_buf_priv_t;
typedef struct _drm_i830_ring_buffer { typedef struct _drm_i830_ring_buffer {
...@@ -79,6 +80,7 @@ typedef struct _drm_i830_ring_buffer { ...@@ -79,6 +80,7 @@ typedef struct _drm_i830_ring_buffer {
int head; int head;
int tail; int tail;
int space; int space;
drm_local_map_t map;
} drm_i830_ring_buffer_t; } drm_i830_ring_buffer_t;
typedef struct drm_i830_private { typedef struct drm_i830_private {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment