drm/i915: Fix hibernate save/restore of VGA attribute regs
authorJesse Barnes <jesse.barnes@intel.com>
Tue, 29 Jan 2008 05:05:22 +0000 (21:05 -0800)
committerDave Airlie <airlied@redhat.com>
Tue, 19 Feb 2008 23:45:14 +0000 (09:45 +1000)
In hibernate, we may end up calling the VGA save regs function twice, so we need to make sure it's idempotent.  That means leaving ARX in index mode after the first save operation.  Fixes hibernate on 965.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/char/drm/i915_drv.c

index 5025f5b02412a9fe885053fea44d845d78c602d3..35758a6c8b0deb4afd181d6d824ca0d110b69e6a 100644 (file)
@@ -160,6 +160,7 @@ static void i915_save_vga(struct drm_device *dev)
                dev_priv->saveAR[i] = i915_read_ar(st01, i, 0);
        inb(st01);
        outb(dev_priv->saveAR_INDEX, VGA_AR_INDEX);
+       inb(st01);
 
        /* Graphics controller registers */
        for (i = 0; i < 9; i++)
@@ -225,6 +226,7 @@ static void i915_restore_vga(struct drm_device *dev)
                i915_write_ar(st01, i, dev_priv->saveAR[i], 0);
        inb(st01); /* switch back to index mode */
        outb(dev_priv->saveAR_INDEX | 0x20, VGA_AR_INDEX);
+       inb(st01);
 
        /* VGA color palette registers */
        outb(dev_priv->saveDACMASK, VGA_DACMASK);