aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_dma.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-06-07 09:55:57 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-06-12 16:18:06 -0400
commitdd2757f8b557ab2030154896eac9b2285557dda6 (patch)
tree8cb47f03ff7a391ac70b749fdddf5d00db2f90d2 /drivers/gpu/drm/i915/i915_dma.c
parent9b990de76ced807b2d92a601fb7f03863b632c58 (diff)
drm/i915: stop using dev->agp->base
For that to work we need to export the base address of the gtt mmio window from intel-gtt. Also replace all other uses of dev->agp by values we already have at hand. Reviewed-by: Jani Nikula <jani.nikula@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 97a5a5857f5b..c639d431ad66 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1085,8 +1085,8 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
1085 1085
1086 ring->status_page.gfx_addr = hws->addr & (0x1ffff<<12); 1086 ring->status_page.gfx_addr = hws->addr & (0x1ffff<<12);
1087 1087
1088 dev_priv->dri1.gfx_hws_cpu_addr = ioremap_wc(dev->agp->base + hws->addr, 1088 dev_priv->dri1.gfx_hws_cpu_addr =
1089 4096); 1089 ioremap_wc(dev_priv->mm.gtt_base_addr + hws->addr, 4096);
1090 if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) { 1090 if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) {
1091 i915_dma_cleanup(dev); 1091 i915_dma_cleanup(dev);
1092 ring->status_page.gfx_addr = 0; 1092 ring->status_page.gfx_addr = 0;
@@ -1482,15 +1482,18 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
1482 } 1482 }
1483 1483
1484 aperture_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; 1484 aperture_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT;
1485 dev_priv->mm.gtt_base_addr = dev_priv->mm.gtt->gma_bus_addr;
1485 1486
1486 dev_priv->mm.gtt_mapping = 1487 dev_priv->mm.gtt_mapping =
1487 io_mapping_create_wc(dev->agp->base, aperture_size); 1488 io_mapping_create_wc(dev_priv->mm.gtt_base_addr,
1489 aperture_size);
1488 if (dev_priv->mm.gtt_mapping == NULL) { 1490 if (dev_priv->mm.gtt_mapping == NULL) {
1489 ret = -EIO; 1491 ret = -EIO;
1490 goto out_rmmap; 1492 goto out_rmmap;
1491 } 1493 }
1492 1494
1493 i915_mtrr_setup(dev_priv, dev->agp->base, aperture_size); 1495 i915_mtrr_setup(dev_priv, dev_priv->mm.gtt_base_addr,
1496 aperture_size);
1494 1497
1495 /* The i915 workqueue is primarily used for batched retirement of 1498 /* The i915 workqueue is primarily used for batched retirement of
1496 * requests (and thus managing bo) once the task has been completed 1499 * requests (and thus managing bo) once the task has been completed
@@ -1602,8 +1605,9 @@ out_gem_unload:
1602 destroy_workqueue(dev_priv->wq); 1605 destroy_workqueue(dev_priv->wq);
1603out_mtrrfree: 1606out_mtrrfree:
1604 if (dev_priv->mm.gtt_mtrr >= 0) { 1607 if (dev_priv->mm.gtt_mtrr >= 0) {
1605 mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, 1608 mtrr_del(dev_priv->mm.gtt_mtrr,
1606 dev->agp->agp_info.aper_size * 1024 * 1024); 1609 dev_priv->mm.gtt_base_addr,
1610 aperture_size);
1607 dev_priv->mm.gtt_mtrr = -1; 1611 dev_priv->mm.gtt_mtrr = -1;
1608 } 1612 }
1609 io_mapping_free(dev_priv->mm.gtt_mapping); 1613 io_mapping_free(dev_priv->mm.gtt_mapping);
@@ -1640,8 +1644,9 @@ int i915_driver_unload(struct drm_device *dev)
1640 1644
1641 io_mapping_free(dev_priv->mm.gtt_mapping); 1645 io_mapping_free(dev_priv->mm.gtt_mapping);
1642 if (dev_priv->mm.gtt_mtrr >= 0) { 1646 if (dev_priv->mm.gtt_mtrr >= 0) {
1643 mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, 1647 mtrr_del(dev_priv->mm.gtt_mtrr,
1644 dev->agp->agp_info.aper_size * 1024 * 1024); 1648 dev_priv->mm.gtt_base_addr,
1649 dev_priv->mm.gtt->gtt_mappable_entries * PAGE_SIZE);
1645 dev_priv->mm.gtt_mtrr = -1; 1650 dev_priv->mm.gtt_mtrr = -1;
1646 } 1651 }
1647 1652