diff options
author | Ian Romanick <idr@us.ibm.com> | 2007-07-30 10:20:15 -0700 |
---|---|---|
committer | Ian Romanick <idr@us.ibm.com> | 2007-07-30 10:20:15 -0700 |
commit | 2fc697a7d270d57463eb5a16a0c65bd8e14c9893 (patch) | |
tree | dbd6720f137647770cfc2d132b505b6385c09105 /linux-core/xgi_drv.c | |
parent | 01628a430d476f5875270d7137fc083ba85cef90 (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.c | 8 |
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); } |