aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMaxim Levitsky <maximlevitsky@gmail.com>2011-10-09 16:58:34 -0400
committerBen Skeggs <bskeggs@redhat.com>2011-12-21 04:01:18 -0500
commita4eaa0a0427ef13468d784953de40c3087e6d870 (patch)
treeb875725b1df8e227a22e8a53b9973ccc870dfbab /drivers
parent71d91f655e549b0eeeb788decad7791ca6a0885b (diff)
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')
-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)
362 362
363 engine->display.init(dev); 363 engine->display.init(dev);
364 364
365 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
366 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
367 u32 offset = nv_crtc->cursor.nvbo->bo.offset;
368
369 nv_crtc->cursor.set_offset(nv_crtc, offset);
370 nv_crtc->cursor.set_pos(nv_crtc, nv_crtc->cursor_saved_x,
371 nv_crtc->cursor_saved_y);
372 }
373
374 /* Force CLUT to get re-loaded during modeset */ 365 /* Force CLUT to get re-loaded during modeset */
375 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 366 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
376 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); 367 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
@@ -386,6 +377,15 @@ nouveau_pci_resume(struct pci_dev *pdev)
386 377
387 drm_helper_resume_force_mode(dev); 378 drm_helper_resume_force_mode(dev);
388 379
380 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
381 struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
382 u32 offset = nv_crtc->cursor.nvbo->bo.offset;
383
384 nv_crtc->cursor.set_offset(nv_crtc, offset);
385 nv_crtc->cursor.set_pos(nv_crtc, nv_crtc->cursor_saved_x,
386 nv_crtc->cursor_saved_y);
387 }
388
389 nouveau_fbcon_restore_accel(dev); 389 nouveau_fbcon_restore_accel(dev);
390 drm_kms_helper_poll_enable(dev); 390 drm_kms_helper_poll_enable(dev);
391 return 0; 391 return 0;