drm/i915: don't store the reg value for HWS_PGA
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 25 Feb 2011 22:26:23 +0000 (22:26 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 2 Mar 2011 09:40:14 +0000 (09:40 +0000)
It is trivially computable from the real physical address so no need to
store both.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_drv.h

index 8924b4bc73699ab8e8a17c1ba1593c39a3f0742d..72730377a01b7cac5fec231c2fd93e5b81b01f99 100644 (file)
 #include <linux/slab.h>
 #include <acpi/video.h>
 
+static void i915_write_hws_pga(struct drm_device *dev)
+{
+       drm_i915_private_t *dev_priv = dev->dev_private;
+       u32 addr;
+
+       addr = dev_priv->status_page_dmah->busaddr;
+       if (INTEL_INFO(dev)->gen >= 4)
+               addr |= (dev_priv->status_page_dmah->busaddr >> 28) & 0xf0;
+       I915_WRITE(HWS_PGA, addr);
+}
+
 /**
  * Sets up the hardware status page for devices that need a physical address
  * in the register.
@@ -62,15 +73,11 @@ static int i915_init_phys_hws(struct drm_device *dev)
        }
        ring->status_page.page_addr =
                (void __force __iomem *)dev_priv->status_page_dmah->vaddr;
-       dev_priv->dma_status_page = dev_priv->status_page_dmah->busaddr;
 
        memset_io(ring->status_page.page_addr, 0, PAGE_SIZE);
 
-       if (INTEL_INFO(dev)->gen >= 4)
-               dev_priv->dma_status_page |= (dev_priv->dma_status_page >> 28) &
-                                            0xf0;
+       i915_write_hws_pga(dev);
 
-       I915_WRITE(HWS_PGA, dev_priv->dma_status_page);
        DRM_DEBUG_DRIVER("Enabled hardware status page\n");
        return 0;
 }
@@ -217,7 +224,7 @@ static int i915_dma_resume(struct drm_device * dev)
        if (ring->status_page.gfx_addr != 0)
                intel_ring_setup_status_page(ring);
        else
-               I915_WRITE(HWS_PGA, dev_priv->dma_status_page);
+               i915_write_hws_pga(dev);
 
        DRM_DEBUG_DRIVER("Enabled hardware status page\n");
 
index 7a4725c240d384240342c89725908f0e1c9f3d41..fd41b86864e91ab9e54c7fa1d6e3f3221dd04492 100644 (file)
@@ -274,7 +274,6 @@ typedef struct drm_i915_private {
        uint32_t next_seqno;
 
        drm_dma_handle_t *status_page_dmah;
-       dma_addr_t dma_status_page;
        uint32_t counter;
        drm_local_map_t hws_map;
        struct drm_i915_gem_object *pwrctx;