Unified · Split
| @@ -49,13 +49,7 @@ nv50_disp_intr_vblank(struct nv50_disp_priv *priv, int crtc) · 48 unmodified lines | ||
| 49 | 49 | if (chan->vblank.crtc != crtc) |
| 50 | 50 | continue; |
| 51 | 51 | |
| 52 | − if (nv_device(priv)->chipset == 0x50) { | |
| 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 { | |
| 52 | + if (nv_device(priv)->chipset >= 0xc0) { | |
| 59 | 53 | nv_wr32(priv, 0x001718, 0x80000000 | chan->vblank.channel); |
| 60 | 54 | bar->flush(bar); |
| 61 | 55 | nv_wr32(priv, 0x06000c, |
| @@ -63,6 +57,17 @@ nv50_disp_intr_vblank(struct nv50_disp_priv *priv, int crtc) · 1 unmodified line | ||
| 63 | 57 | nv_wr32(priv, 0x060010, |
| 64 | 58 | lower_32_bits(chan->vblank.offset)); |
| 65 | 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 | 73 | list_del(&chan->vblank.head); |