diff options
| author | Kelly Doran <kel.p.doran@gmail.com> | 2012-11-14 23:37:28 -0500 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2012-11-18 17:52:03 -0500 |
| commit | 4113014f2d7bef992ed373c30b6b4ba4be6969ea (patch) | |
| tree | aa70c3f6e7a3f36d6dcb5365d0378227284bba13 /drivers/gpu | |
| parent | df285500b203a5603b1cdd1b16f42ab7a3544d7b (diff) | |
drm/nvc0/disp: fix thinko in vblank regression fix..
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/disp/nv50.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c index 05a909a17cee..15b182c84ce8 100644 --- a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c | |||
| @@ -49,13 +49,7 @@ nv50_disp_intr_vblank(struct nv50_disp_priv *priv, int crtc) | |||
| 49 | if (chan->vblank.crtc != crtc) | 49 | if (chan->vblank.crtc != crtc) |
| 50 | continue; | 50 | continue; |
| 51 | 51 | ||
| 52 | if (nv_device(priv)->chipset == 0x50) { | 52 | if (nv_device(priv)->chipset >= 0xc0) { |
| 53 | nv_wr32(priv, 0x001704, chan->vblank.channel); | ||
| 54 | nv_wr32(priv, 0x001710, 0x80000000 | chan->vblank.ctxdma); | ||
| 55 | bar->flush(bar); | ||
| 56 | nv_wr32(priv, 0x001570, chan->vblank.offset); | ||
| 57 | nv_wr32(priv, 0x001574, chan->vblank.value); | ||
| 58 | } else { | ||
| 59 | nv_wr32(priv, 0x001718, 0x80000000 | chan->vblank.channel); | 53 | nv_wr32(priv, 0x001718, 0x80000000 | chan->vblank.channel); |
| 60 | bar->flush(bar); | 54 | bar->flush(bar); |
| 61 | nv_wr32(priv, 0x06000c, | 55 | nv_wr32(priv, 0x06000c, |
| @@ -63,6 +57,17 @@ nv50_disp_intr_vblank(struct nv50_disp_priv *priv, int crtc) | |||
| 63 | nv_wr32(priv, 0x060010, | 57 | nv_wr32(priv, 0x060010, |
| 64 | lower_32_bits(chan->vblank.offset)); | 58 | lower_32_bits(chan->vblank.offset)); |
| 65 | nv_wr32(priv, 0x060014, chan->vblank.value); | 59 | nv_wr32(priv, 0x060014, chan->vblank.value); |
| 60 | } else { | ||
| 61 | nv_wr32(priv, 0x001704, chan->vblank.channel); | ||
| 62 | nv_wr32(priv, 0x001710, 0x80000000 | chan->vblank.ctxdma); | ||
| 63 | bar->flush(bar); | ||
| 64 | if (nv_device(priv)->chipset == 0x50) { | ||
| 65 | nv_wr32(priv, 0x001570, chan->vblank.offset); | ||
| 66 | nv_wr32(priv, 0x001574, chan->vblank.value); | ||
| 67 | } else { | ||
| 68 | nv_wr32(priv, 0x060010, chan->vblank.offset); | ||
| 69 | nv_wr32(priv, 0x060014, chan->vblank.value); | ||
| 70 | } | ||
| 66 | } | 71 | } |
| 67 | 72 | ||
| 68 | list_del(&chan->vblank.head); | 73 | list_del(&chan->vblank.head); |
