diff options
author | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2007-06-29 21:04:17 +0100 |
---|---|---|
committer | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2007-06-29 21:04:17 +0100 |
commit | 70fd9351ed6c666def710fd61b542a7c975d9ac9 (patch) | |
tree | bceb4af8cfe2861436489bfa1081cfa7563ef501 | |
parent | adff58223f4568d084cf62d03d4ecfc3a6cec000 (diff) |
Move out the code from i915_dma_cleanup to unload to match
existing code.
This needs verifying.
-rw-r--r-- | shared-core/i915_dma.c | 24 | ||||
-rw-r--r-- | shared-core/i915_init.c | 10 |
2 files changed, 10 insertions, 24 deletions
diff --git a/shared-core/i915_dma.c b/shared-core/i915_dma.c index 008adc0a..7dd68954 100644 --- a/shared-core/i915_dma.c +++ b/shared-core/i915_dma.c @@ -91,30 +91,6 @@ int i915_dma_cleanup(drm_device_t * dev) if (dev->irq) drm_irq_uninstall(dev); - if (dev->dev_private) { - drm_i915_private_t *dev_priv = - (drm_i915_private_t *) dev->dev_private; - - if (dev_priv->ring.virtual_start) { - drm_core_ioremapfree(&dev_priv->ring.map, dev); - } - - if (dev_priv->status_page_dmah) { - drm_pci_free(dev, dev_priv->status_page_dmah); - /* Need to rewrite hardware status page */ - I915_WRITE(I915REG_HWS_PGA, 0x1ffff000); - } - if (dev_priv->status_gfx_addr) { - dev_priv->status_gfx_addr = 0; - drm_core_ioremapfree(&dev_priv->hws_map, dev); - I915_WRITE(I915REG_HWS_PGA, 0x1ffff000); - } - drm_free(dev->dev_private, sizeof(drm_i915_private_t), - DRM_MEM_DRIVER); - - dev->dev_private = NULL; - } - return 0; } diff --git a/shared-core/i915_init.c b/shared-core/i915_init.c index e4a2cdef..fd102b35 100644 --- a/shared-core/i915_init.c +++ b/shared-core/i915_init.c @@ -257,6 +257,10 @@ int i915_driver_unload(drm_device_t *dev) { drm_i915_private_t *dev_priv = dev->dev_private; + if (dev_priv->ring.virtual_start) { + drm_core_ioremapfree(&dev_priv->ring.map, dev); + } + if (dev_priv->status_page_dmah) { drm_pci_free(dev, dev_priv->status_page_dmah); dev_priv->status_page_dmah = NULL; @@ -266,6 +270,12 @@ int i915_driver_unload(drm_device_t *dev) I915_WRITE(I915REG_HWS_PGA, 0x1ffff000); } + if (dev_priv->status_gfx_addr) { + dev_priv->status_gfx_addr = 0; + drm_core_ioremapfree(&dev_priv->hws_map, dev); + I915_WRITE(I915REG_HWS_PGA, 0x1ffff000); + } + I915_WRITE(LP_RING + RING_LEN, 0); intel_modeset_cleanup(dev); |