summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwain Ainsworth <oga@cvs.openbsd.org>2010-08-12 15:07:26 +0000
committerOwain Ainsworth <oga@cvs.openbsd.org>2010-08-12 15:07:26 +0000
commita77bdd8719ac72d430b7910c78a0dbc9d126d630 (patch)
tree2213545b48e649d703f6e136b28975af1687eb05
parent40ad5e5f1bda27bfeb7bfdad8f6678d2a3dac781 (diff)
Fix a one character typo that broke interrupt handling on ironlake.
we disable the interrupt while we are handling it (this is required according to intel) but instead of writing the version with the master enable bit back to the Interrupt Enable Register, we wrote it to the Interrupt Indication Register, so after the first interrupt we only got lucky due to shared interrupts when we were after anything. s/IIR/IMR/ on that one call and it works. tested by guenther@ and marco@ and myself. Fixes hangs when waiting for the chip which were unstuck by moving the mouse.
-rw-r--r--sys/dev/pci/drm/i915_drv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/pci/drm/i915_drv.c b/sys/dev/pci/drm/i915_drv.c
index 86cc34c6b14..efdbfcdb8e2 100644
--- a/sys/dev/pci/drm/i915_drv.c
+++ b/sys/dev/pci/drm/i915_drv.c
@@ -652,7 +652,7 @@ inteldrm_ironlake_intr(void *arg)
I915_WRITE(DEIIR, de_iir);
done:
- I915_WRITE(DEIIR, de_ier);
+ I915_WRITE(DEIER, de_ier);
(void)I915_READ(DEIER);
return (ret);