diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-07-05 05:19:16 (GMT) |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-07-13 00:13:30 (GMT) |
commit | 835aadbef3b762bc43eceddfec90c9a5a312d3c1 (patch) | |
tree | 1f79a03f0c690b51ab5ba9fcc970998d83d76667 /drivers/gpu/drm/nouveau/nv50_dac.c | |
parent | 4664c67b5d054012562a74414ed3f8619912b3d1 (diff) | |
download | linux-835aadbef3b762bc43eceddfec90c9a5a312d3c1.tar.xz |
drm/nv50: send evo "update" command after each disconnect
It turns out that the display engine signals an interrupt for disconnects
too. In order to make it easier to process the display interrupts
correctly, we want to ensure we only get one operation per interrupt
sequence - this is what this commit achieves.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv50_dac.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nv50_dac.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nv50_dac.c b/drivers/gpu/drm/nouveau/nv50_dac.c index 98d3126..71e0d5f 100644 --- a/drivers/gpu/drm/nouveau/nv50_dac.c +++ b/drivers/gpu/drm/nouveau/nv50_dac.c @@ -47,16 +47,19 @@ nv50_dac_disconnect(struct drm_encoder *encoder) if (!nv_encoder->crtc) return; + nv50_crtc_blank(nouveau_crtc(nv_encoder->crtc), true); NV_DEBUG_KMS(dev, "Disconnecting DAC %d\n", nv_encoder->or); - ret = RING_SPACE(evo, 2); + ret = RING_SPACE(evo, 4); if (ret) { NV_ERROR(dev, "no space while disconnecting DAC\n"); return; } BEGIN_RING(evo, 0, NV50_EVO_DAC(nv_encoder->or, MODE_CTRL), 1); - OUT_RING(evo, 0); + OUT_RING (evo, 0); + BEGIN_RING(evo, 0, NV50_EVO_UPDATE, 1); + OUT_RING (evo, 0); nv_encoder->crtc = NULL; } |