Commit 42dd8619 authored by Simon Farnsworth's avatar Simon Farnsworth Committed by Dave Airlie

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: default avatarDave Airlie <airlied@linux.ie>
parent 845792d9
...@@ -183,7 +183,7 @@ int via_enable_vblank(struct drm_device *dev, int crtc) ...@@ -183,7 +183,7 @@ int via_enable_vblank(struct drm_device *dev, int crtc)
} }
status = VIA_READ(VIA_REG_INTERRUPT); 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(0x83d4, 0x11);
VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30); VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30);
...@@ -194,6 +194,10 @@ int via_enable_vblank(struct drm_device *dev, int crtc) ...@@ -194,6 +194,10 @@ int via_enable_vblank(struct drm_device *dev, int crtc)
void via_disable_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; 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(0x83d4, 0x11);
VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) & ~0x30); VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) & ~0x30);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment