aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-11-21 22:59:30 -0500
committerBen Skeggs <bskeggs@redhat.com>2012-05-24 02:32:01 -0400
commitafada5e0bb3cac8530c2ae36aa0abca41d60e063 (patch)
tree32c87d14179a21c5fbec15ae1c1e30b724d1c9ac /drivers/gpu
parent695b95b810d1c3024d7bad9e3658a35e11a60d86 (diff)
drm/nv04/disp: disable vblank interrupts when disabling display
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_hw.c5
-rw-r--r--drivers/gpu/drm/nouveau/nv04_display.c11
2 files changed, 11 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_hw.c b/drivers/gpu/drm/nouveau/nouveau_hw.c
index ba896e54b799..b87ad3bd7739 100644
--- a/drivers/gpu/drm/nouveau/nouveau_hw.c
+++ b/drivers/gpu/drm/nouveau/nouveau_hw.c
@@ -1018,11 +1018,6 @@ nv_load_state_ext(struct drm_device *dev, int head,
1018 } 1018 }
1019 1019
1020 NVWriteCRTC(dev, head, NV_PCRTC_START, regp->fb_start); 1020 NVWriteCRTC(dev, head, NV_PCRTC_START, regp->fb_start);
1021
1022 /* Enable vblank interrupts. */
1023 NVWriteCRTC(dev, head, NV_PCRTC_INTR_EN_0,
1024 (dev->vblank_enabled[head] ? 1 : 0));
1025 NVWriteCRTC(dev, head, NV_PCRTC_INTR_0, NV_PCRTC_INTR_0_VBLANK);
1026} 1021}
1027 1022
1028static void 1023static void
diff --git a/drivers/gpu/drm/nouveau/nv04_display.c b/drivers/gpu/drm/nouveau/nv04_display.c
index 7047d37e8dab..44488e3a257d 100644
--- a/drivers/gpu/drm/nouveau/nv04_display.c
+++ b/drivers/gpu/drm/nouveau/nv04_display.c
@@ -98,6 +98,13 @@ nv04_display_early_init(struct drm_device *dev)
98 NVSetOwner(dev, 0); 98 NVSetOwner(dev, 0);
99 } 99 }
100 100
101 /* ensure vblank interrupts are off, they can't be enabled until
102 * drm_vblank has been initialised
103 */
104 NVWriteCRTC(dev, 0, NV_PCRTC_INTR_EN_0, 0);
105 if (nv_two_heads(dev))
106 NVWriteCRTC(dev, 1, NV_PCRTC_INTR_EN_0, 0);
107
101 return 0; 108 return 0;
102} 109}
103 110
@@ -246,6 +253,10 @@ nv04_display_init(struct drm_device *dev)
246void 253void
247nv04_display_fini(struct drm_device *dev) 254nv04_display_fini(struct drm_device *dev)
248{ 255{
256 /* disable vblank interrupts */
257 NVWriteCRTC(dev, 0, NV_PCRTC_INTR_EN_0, 0);
258 if (nv_two_heads(dev))
259 NVWriteCRTC(dev, 1, NV_PCRTC_INTR_EN_0, 0);
249} 260}
250 261
251static void 262static void