summaryrefslogtreecommitdiff
path: root/linux-core/xgi_drv.c
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2007-07-30 10:20:15 -0700
committerIan Romanick <idr@us.ibm.com>2007-07-30 10:20:15 -0700
commit2fc697a7d270d57463eb5a16a0c65bd8e14c9893 (patch)
treedbd6720f137647770cfc2d132b505b6385c09105 /linux-core/xgi_drv.c
parent01628a430d476f5875270d7137fc083ba85cef90 (diff)
Fix GE shut-down sequence.
When the GE is shut down, an empty command packet without a begin-link must be sent. After this command is sent, wait for the hardware to go idle. Finally, turn off the GE and disable MMIO.
Diffstat (limited to 'linux-core/xgi_drv.c')
-rw-r--r--linux-core/xgi_drv.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/linux-core/xgi_drv.c b/linux-core/xgi_drv.c
index 0b094a31..201062ee 100644
--- a/linux-core/xgi_drv.c
+++ b/linux-core/xgi_drv.c
@@ -242,6 +242,12 @@ void xgi_driver_lastclose(struct drm_device * dev)
struct xgi_info * info = dev->dev_private;
if (info != NULL) {
+ if (info->mmio_map != NULL) {
+ xgi_cmdlist_cleanup(info);
+ xgi_disable_ge(info);
+ xgi_disable_mmio(info);
+ }
+
/* The core DRM lastclose routine will destroy all of our
* mappings for us. NULL out the pointers here so that
* xgi_bootstrap can do the right thing.
@@ -250,8 +256,6 @@ void xgi_driver_lastclose(struct drm_device * dev)
info->mmio_map = NULL;
info->fb_map = NULL;
- xgi_cmdlist_cleanup(info);
-
if (info->fb_heap.initialized) {
xgi_mem_heap_cleanup(&info->fb_heap);
}