]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drm/i915: save/restore BLC histogram control reg across suspend/resume
authorJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 14 Oct 2009 19:33:41 +0000 (12:33 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 18 Dec 2009 21:44:17 +0000 (13:44 -0800)
commit 0eb96d6ed38430b72897adde58f5477a6b71757a upstream.

Turns out some machines, like the ThinkPad X40 don't come back if you
don't save/restore this register.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
Cc: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/i915_suspend.c

index 88b3eff345602093857b4c647a955a2ece2e2e9d..602dd76468cf61d42f102bd8a5c1727b725321f5 100644 (file)
@@ -264,6 +264,7 @@ typedef struct drm_i915_private {
        u32 saveDSPASURF;
        u32 saveDSPATILEOFF;
        u32 savePFIT_PGM_RATIOS;
+       u32 saveBLC_HIST_CTL;
        u32 saveBLC_PWM_CTL;
        u32 saveBLC_PWM_CTL2;
        u32 saveFPB0;
index c017fa18566be76286d58c14aa6253af35d96e7e..9917749afb325bbebef62e292881b56ec839ed77 100644 (file)
 #define   BACKLIGHT_DUTY_CYCLE_SHIFT           (0)
 #define   BACKLIGHT_DUTY_CYCLE_MASK            (0xffff)
 
+#define BLC_HIST_CTL           0x61260
+
 /* TV port control */
 #define TV_CTL                 0x68000
 /** Enables the TV encoder */
index 1d04e1904ac69c7be338897a71d25900e44927d1..2e4aca658b8b9586fe882b73b293ed57bfd3dc1b 100644 (file)
@@ -416,6 +416,7 @@ int i915_save_state(struct drm_device *dev)
        dev_priv->savePP_CONTROL = I915_READ(PP_CONTROL);
        dev_priv->savePFIT_PGM_RATIOS = I915_READ(PFIT_PGM_RATIOS);
        dev_priv->saveBLC_PWM_CTL = I915_READ(BLC_PWM_CTL);
+       dev_priv->saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL);
        if (IS_I965G(dev))
                dev_priv->saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2);
        if (IS_MOBILE(dev) && !IS_I830(dev))
@@ -560,6 +561,7 @@ int i915_restore_state(struct drm_device *dev)
 
        I915_WRITE(PFIT_PGM_RATIOS, dev_priv->savePFIT_PGM_RATIOS);
        I915_WRITE(BLC_PWM_CTL, dev_priv->saveBLC_PWM_CTL);
+       I915_WRITE(BLC_HIST_CTL, dev_priv->saveBLC_HIST_CTL);
        I915_WRITE(PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS);
        I915_WRITE(PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS);
        I915_WRITE(PP_DIVISOR, dev_priv->savePP_DIVISOR);