Commit 5190707e authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Gen3 HWSTAM is actually 32 bits

Bspec claims that HWSTAM is only 16 bits on gen3, but the other
interrupts registers are 32 bits and there are 18 valid interrupt
bits. Hence a 16 bit HWSTAM wouldn't be able to contain all the
bits, so it seems the spec is incorrect about the size of the
register. And indeed I can clear bits 16 and 17 just fine with
a 32 bit write. So let's adjust the code to treat the register
as 32 bits.
Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170818183705.27850-14-ville.syrjala@linux.intel.com
parent af722d28
...@@ -3755,7 +3755,7 @@ static void i915_irq_preinstall(struct drm_device * dev) ...@@ -3755,7 +3755,7 @@ static void i915_irq_preinstall(struct drm_device * dev)
i9xx_pipestat_irq_reset(dev_priv); i9xx_pipestat_irq_reset(dev_priv);
I915_WRITE16(HWSTAM, 0xeffe); I915_WRITE(HWSTAM, 0xffffeffe);
GEN3_IRQ_RESET(); GEN3_IRQ_RESET();
} }
...@@ -3862,7 +3862,7 @@ static void i915_irq_uninstall(struct drm_device * dev) ...@@ -3862,7 +3862,7 @@ static void i915_irq_uninstall(struct drm_device * dev)
i9xx_pipestat_irq_reset(dev_priv); i9xx_pipestat_irq_reset(dev_priv);
I915_WRITE16(HWSTAM, 0xffff); I915_WRITE(HWSTAM, 0xffffffff);
GEN3_IRQ_RESET(); GEN3_IRQ_RESET();
} }
......
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