aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
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
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')
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c21
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_debug.c3
-rw-r--r--drivers/gpu/drm/i915/intel_display.c2
-rw-r--r--drivers/gpu/drm/i915/intel_fb.c4
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c6
7 files changed, 25 insertions, 14 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
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index ccabadd2b6c3..ae4129b3cb3e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -651,6 +651,7 @@ typedef struct drm_i915_private {
651 unsigned long gtt_end; 651 unsigned long gtt_end;
652 652
653 struct io_mapping *gtt_mapping; 653 struct io_mapping *gtt_mapping;
654 phys_addr_t gtt_base_addr;
654 int gtt_mtrr; 655 int gtt_mtrr;
655 656
656 /** PPGTT used for aliasing the PPGTT with the GTT */ 657 /** PPGTT used for aliasing the PPGTT with the GTT */
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index deaa0d4bb456..108e4c2b5ffa 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1122,7 +1122,7 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
1122 1122
1123 obj->fault_mappable = true; 1123 obj->fault_mappable = true;
1124 1124
1125 pfn = ((dev->agp->base + obj->gtt_offset) >> PAGE_SHIFT) + 1125 pfn = ((dev_priv->mm.gtt_base_addr + obj->gtt_offset) >> PAGE_SHIFT) +
1126 page_offset; 1126 page_offset;
1127 1127
1128 /* Finally, remap it using the new GTT offset */ 1128 /* Finally, remap it using the new GTT offset */
diff --git a/drivers/gpu/drm/i915/i915_gem_debug.c b/drivers/gpu/drm/i915/i915_gem_debug.c
index a4f6aaabca99..bddf7bed183f 100644
--- a/drivers/gpu/drm/i915/i915_gem_debug.c
+++ b/drivers/gpu/drm/i915/i915_gem_debug.c
@@ -132,7 +132,8 @@ i915_gem_object_check_coherency(struct drm_i915_gem_object *obj, int handle)
132 __func__, obj, obj->gtt_offset, handle, 132 __func__, obj, obj->gtt_offset, handle,
133 obj->size / 1024); 133 obj->size / 1024);
134 134
135 gtt_mapping = ioremap(dev->agp->base + obj->gtt_offset, obj->base.size); 135 gtt_mapping = ioremap(dev_priv->mm.gtt_base_addr + obj->gtt_offset,
136 obj->base.size);
136 if (gtt_mapping == NULL) { 137 if (gtt_mapping == NULL) {
137 DRM_ERROR("failed to map GTT space\n"); 138 DRM_ERROR("failed to map GTT space\n");
138 return; 139 return;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index bad36e0b8045..174549df5929 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6954,7 +6954,7 @@ void intel_modeset_init(struct drm_device *dev)
6954 dev->mode_config.max_width = 8192; 6954 dev->mode_config.max_width = 8192;
6955 dev->mode_config.max_height = 8192; 6955 dev->mode_config.max_height = 8192;
6956 } 6956 }
6957 dev->mode_config.fb_base = dev->agp->base; 6957 dev->mode_config.fb_base = dev_priv->mm.gtt_base_addr;
6958 6958
6959 DRM_DEBUG_KMS("%d display pipe%s available.\n", 6959 DRM_DEBUG_KMS("%d display pipe%s available.\n",
6960 dev_priv->num_pipe, dev_priv->num_pipe > 1 ? "s" : ""); 6960 dev_priv->num_pipe, dev_priv->num_pipe > 1 ? "s" : "");
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c
index bf8690720a0c..e9f8338bd802 100644
--- a/drivers/gpu/drm/i915/intel_fb.c
+++ b/drivers/gpu/drm/i915/intel_fb.c
@@ -140,7 +140,9 @@ static int intelfb_create(struct intel_fbdev *ifbdev,
140 info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset; 140 info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset;
141 info->fix.smem_len = size; 141 info->fix.smem_len = size;
142 142
143 info->screen_base = ioremap_wc(dev->agp->base + obj->gtt_offset, size); 143 info->screen_base =
144 ioremap_wc(dev_priv->mm.gtt_base_addr + obj->gtt_offset,
145 size);
144 if (!info->screen_base) { 146 if (!info->screen_base) {
145 ret = -ENOSPC; 147 ret = -ENOSPC;
146 goto out_unpin; 148 goto out_unpin;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 89a5e7f89d7a..14025ab9d4ca 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -968,6 +968,7 @@ static int intel_init_ring_buffer(struct drm_device *dev,
968 struct intel_ring_buffer *ring) 968 struct intel_ring_buffer *ring)
969{ 969{
970 struct drm_i915_gem_object *obj; 970 struct drm_i915_gem_object *obj;
971 struct drm_i915_private *dev_priv = dev->dev_private;
971 int ret; 972 int ret;
972 973
973 ring->dev = dev; 974 ring->dev = dev;
@@ -997,8 +998,9 @@ static int intel_init_ring_buffer(struct drm_device *dev,
997 if (ret) 998 if (ret)
998 goto err_unref; 999 goto err_unref;
999 1000
1000 ring->virtual_start = ioremap_wc(dev->agp->base + obj->gtt_offset, 1001 ring->virtual_start =
1001 ring->size); 1002 ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset,
1003 ring->size);
1002 if (ring->virtual_start == NULL) { 1004 if (ring->virtual_start == NULL) {
1003 DRM_ERROR("Failed to map ringbuffer.\n"); 1005 DRM_ERROR("Failed to map ringbuffer.\n");
1004 ret = -EINVAL; 1006 ret = -EINVAL;