From: Zhenyu Wang <zhen...@linux.intel.com>

The sync flush enable mask on 845G and 830M is flipped.
So driver should invert it usage.

Signed-off-by: Zhenyu Wang <zhen...@linux.intel.com>
Reviewed-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_dma.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index f19ffe8..4b6c2f8 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1356,6 +1356,7 @@ static int i915_load_modeset_init(struct drm_device *dev,
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        int fb_bar = IS_I9XX(dev) ? 2 : 0;
+       u32 instpm_val;
        int ret = 0;
 
        dev->mode_config.fb_base = pci_resource_start(dev->pdev, fb_bar) &
@@ -1432,9 +1433,14 @@ static int i915_load_modeset_init(struct drm_device *dev,
 
        /*
         * Initialize the hardware status page IRQ location.
+        * errata: on 845G and 830M, bit 21's polarity is reversed,
+        * so the usage is inverted.
         */
-
-       I915_WRITE(INSTPM, (1 << 5) | (1 << 21));
+       if (IS_845G(dev) || IS_I830(dev))
+           instpm_val = (1 << 5) | (0 << 21);
+       else
+           instpm_val = (1 << 5) | (1 << 21);
+       I915_WRITE(INSTPM, instpm_val);
 
        ret = intel_fbdev_init(dev);
        if (ret)
-- 
1.7.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to