diff options
author | Simon Farnsworth <simon.farnsworth@onelan.com> | 2009-07-10 11:25:16 +0100 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2009-07-15 16:00:07 +1000 |
commit | 42dd8619940a153e950c4d2301cd5e49f7342f99 (patch) | |
tree | c2ddcadc9d3d36823792494a9b11c08fb109874b /drivers/gpu/drm/via/via_irq.c | |
parent | 845792d940f5755b7a7837c450a71d9e831a13e2 (diff) | |
download | op-kernel-dev-42dd8619940a153e950c4d2301cd5e49f7342f99.zip op-kernel-dev-42dd8619940a153e950c4d2301cd5e49f7342f99.tar.gz |
drm/via: Fix vblank IRQ on VIA hardware.
via_enable_vblank wasn't setting the VBlank enable bit - instead, it
was masking out the rest of the register.
At the same time, fix via_disable_vblank to clear the VBlank enable
bit.
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/gpu/drm/via/via_irq.c')
-rw-r--r-- | drivers/gpu/drm/via/via_irq.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/via/via_irq.c b/drivers/gpu/drm/via/via_irq.c index c248c1d..5935b88 100644 --- a/drivers/gpu/drm/via/via_irq.c +++ b/drivers/gpu/drm/via/via_irq.c @@ -183,7 +183,7 @@ int via_enable_vblank(struct drm_device *dev, int crtc) } status = VIA_READ(VIA_REG_INTERRUPT); - VIA_WRITE(VIA_REG_INTERRUPT, status & VIA_IRQ_VBLANK_ENABLE); + VIA_WRITE(VIA_REG_INTERRUPT, status | VIA_IRQ_VBLANK_ENABLE); VIA_WRITE8(0x83d4, 0x11); VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30); @@ -194,6 +194,10 @@ int via_enable_vblank(struct drm_device *dev, int crtc) void via_disable_vblank(struct drm_device *dev, int crtc) { drm_via_private_t *dev_priv = dev->dev_private; + u32 status; + + status = VIA_READ(VIA_REG_INTERRUPT); + VIA_WRITE(VIA_REG_INTERRUPT, status & ~VIA_IRQ_VBLANK_ENABLE); VIA_WRITE8(0x83d4, 0x11); VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) & ~0x30); |