diff options
author | Maxim Levitsky <maximlevitsky@gmail.com> | 2011-10-09 16:58:34 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-12-21 04:01:18 -0500 |
commit | a4eaa0a0427ef13468d784953de40c3087e6d870 (patch) | |
tree | b875725b1df8e227a22e8a53b9973ccc870dfbab /drivers | |
parent | 71d91f655e549b0eeeb788decad7791ca6a0885b (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.c | 18 |
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; |