diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-06-07 09:55:57 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-06-12 16:18:06 -0400 |
commit | dd2757f8b557ab2030154896eac9b2285557dda6 (patch) | |
tree | 8cb47f03ff7a391ac70b749fdddf5d00db2f90d2 /drivers/gpu | |
parent | 9b990de76ced807b2d92a601fb7f03863b632c58 (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.c | 21 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_debug.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_fb.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 6 |
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); |
1603 | out_mtrrfree: | 1606 | out_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; |