summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_drv.c
diff options
context:
space:
mode:
authorMaxim Levitsky <maximlevitsky@gmail.com>2011-10-09 22:58:34 +0200
committerBen Skeggs <bskeggs@redhat.com>2011-12-21 19:01:18 +1000
commita4eaa0a0427ef13468d784953de40c3087e6d870 (patch)
treeb875725b1df8e227a22e8a53b9973ccc870dfbab /drivers/gpu/drm/nouveau/nouveau_drv.c
parent71d91f655e549b0eeeb788decad7791ca6a0885b (diff)
downloadlinux-a4eaa0a0427ef13468d784953de40c3087e6d870.tar.gz
linux-a4eaa0a0427ef13468d784953de40c3087e6d870.tar.xz
linux-a4eaa0a0427ef13468d784953de40c3087e6d870.zip
drm/nouveau: restore cursors after restoring mode
PDISP doesn't like it when disabled CRTCs are poked. Fixes external output not coming to life when it has cursor on. https://bugs.freedesktop.org/show_bug.cgi?id=41608 Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drv.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drv.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
index 1e1b4a47b700..c033a0a4f2b2 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -362,15 +362,6 @@ nouveau_pci_resume(struct pci_dev *pdev)
engine->display.init(dev);
- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
- struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
- u32 offset = nv_crtc->cursor.nvbo->bo.offset;
-
- nv_crtc->cursor.set_offset(nv_crtc, offset);
- nv_crtc->cursor.set_pos(nv_crtc, nv_crtc->cursor_saved_x,
- nv_crtc->cursor_saved_y);
- }
-
/* Force CLUT to get re-loaded during modeset */
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
@@ -386,6 +377,15 @@ nouveau_pci_resume(struct pci_dev *pdev)
drm_helper_resume_force_mode(dev);
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
+ struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
+ u32 offset = nv_crtc->cursor.nvbo->bo.offset;
+
+ nv_crtc->cursor.set_offset(nv_crtc, offset);
+ nv_crtc->cursor.set_pos(nv_crtc, nv_crtc->cursor_saved_x,
+ nv_crtc->cursor_saved_y);
+ }
+
nouveau_fbcon_restore_accel(dev);
drm_kms_helper_poll_enable(dev);
return 0;