|
@@ -236,19 +236,9 @@ static void i915_save_display(struct drm_device *dev)
|
|
|
dev_priv->regfile.savePP_DIVISOR = I915_READ(PP_DIVISOR);
|
|
|
}
|
|
|
|
|
|
- /* Only regfile.save FBC state on the platform that supports FBC */
|
|
|
- if (HAS_FBC(dev)) {
|
|
|
- if (HAS_PCH_SPLIT(dev)) {
|
|
|
- dev_priv->regfile.saveDPFC_CB_BASE = I915_READ(ILK_DPFC_CB_BASE);
|
|
|
- } else if (IS_GM45(dev)) {
|
|
|
- dev_priv->regfile.saveDPFC_CB_BASE = I915_READ(DPFC_CB_BASE);
|
|
|
- } else {
|
|
|
- dev_priv->regfile.saveFBC_CFB_BASE = I915_READ(FBC_CFB_BASE);
|
|
|
- dev_priv->regfile.saveFBC_LL_BASE = I915_READ(FBC_LL_BASE);
|
|
|
- dev_priv->regfile.saveFBC_CONTROL2 = I915_READ(FBC_CONTROL2);
|
|
|
- dev_priv->regfile.saveFBC_CONTROL = I915_READ(FBC_CONTROL);
|
|
|
- }
|
|
|
- }
|
|
|
+ /* save FBC interval */
|
|
|
+ if (HAS_FBC(dev) && INTEL_INFO(dev)->gen <= 4 && !IS_G4X(dev))
|
|
|
+ dev_priv->regfile.saveFBC_CONTROL = I915_READ(FBC_CONTROL);
|
|
|
|
|
|
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
|
|
i915_save_vga(dev);
|
|
@@ -300,18 +290,10 @@ static void i915_restore_display(struct drm_device *dev)
|
|
|
|
|
|
/* only restore FBC info on the platform that supports FBC*/
|
|
|
intel_disable_fbc(dev);
|
|
|
- if (HAS_FBC(dev)) {
|
|
|
- if (HAS_PCH_SPLIT(dev)) {
|
|
|
- I915_WRITE(ILK_DPFC_CB_BASE, dev_priv->regfile.saveDPFC_CB_BASE);
|
|
|
- } else if (IS_GM45(dev)) {
|
|
|
- I915_WRITE(DPFC_CB_BASE, dev_priv->regfile.saveDPFC_CB_BASE);
|
|
|
- } else {
|
|
|
- I915_WRITE(FBC_CFB_BASE, dev_priv->regfile.saveFBC_CFB_BASE);
|
|
|
- I915_WRITE(FBC_LL_BASE, dev_priv->regfile.saveFBC_LL_BASE);
|
|
|
- I915_WRITE(FBC_CONTROL2, dev_priv->regfile.saveFBC_CONTROL2);
|
|
|
- I915_WRITE(FBC_CONTROL, dev_priv->regfile.saveFBC_CONTROL);
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ /* restore FBC interval */
|
|
|
+ if (HAS_FBC(dev) && INTEL_INFO(dev)->gen <= 4 && !IS_G4X(dev))
|
|
|
+ I915_WRITE(FBC_CONTROL, dev_priv->regfile.saveFBC_CONTROL);
|
|
|
|
|
|
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
|
|
i915_restore_vga(dev);
|