From: Maxim Levitsky Date: Sun, 9 Oct 2011 20:58:34 +0000 (+0200) Subject: drm/nouveau: restore cursors after restoring mode X-Git-Tag: firefly_0821_release~3680^2~3773^2~51^2~78 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a4eaa0a0427ef13468d784953de40c3087e6d870;p=firefly-linux-kernel-4.4.55.git 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 Signed-off-by: Ben Skeggs --- 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;