Skip to contentSkip to conversation

drm/i915: Turn on 945 self-refresh only if single CRTC is active

PATCH Applied Li Peng 3 participants 3 messages Jun 12, 2010 – Jun 15, 2010

Subsystems (2)
lore
Share & tools
lore

Li Peng

author
#0 lore raw

PATCH 1/1 drm/i915: Turn on 945 self-refresh only if single CRTC is active

Enable self-refresh on 945 when just one CRTC is activated. Otherwise user would get display flicker with dual display.

This fixes https://bugs.freedesktop.org/show_bug.cgi?id=27667

---
 drivers/gpu/drm/i915/intel_display.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)
drivers/gpu/drm/i915/intel_display.c +7 -5
index 88a1ab7..04c18a2 100644
@@ -4469,6 +4469,7 @@ static void intel_idle_update(struct work_struct *work)
 	struct drm_device *dev = dev_priv->dev;
 	struct drm_crtc *crtc;
 	struct intel_crtc *intel_crtc;
+	int enabled = 0;
 
 	if (!i915_powersave)
 		return;
@@ -4477,21 +4478,22 @@ static void intel_idle_update(struct work_struct *work)
 
 	i915_update_gfx_val(dev_priv);
 
-	if (IS_I945G(dev) || IS_I945GM(dev)) {
-		DRM_DEBUG_DRIVER("enable memory self refresh on 945\n");
-		I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN_MASK | FW_BLC_SELF_EN);
-	}
-
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 		/* Skip inactive CRTCs */
 		if (!crtc->fb)
 			continue;
 
+		enabled++;
 		intel_crtc = to_intel_crtc(crtc);
 		if (!intel_crtc->busy)
 			intel_decrease_pllclock(crtc);
 	}
 
+	if ((enabled == 1) && (IS_I945G(dev) || IS_I945GM(dev))) {
+		DRM_DEBUG_DRIVER("enable memory self refresh on 945\n");
+		I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN_MASK | FW_BLC_SELF_EN);
+	}
+
 	mutex_unlock(&dev->struct_mutex);
 }
 
Signature · 1 line
1.6.6.1
Reviewed-by on v1 1/1
#1 lore raw
Quoted 6 lines · Li Peng

Enable self-refresh on 945 when just one CRTC is activated. Otherwise user would get display flicker with dual display.

This fixes https://bugs.freedesktop.org/show_bug.cgi?id=27667

Though I still don't buy the "power saving only matters with one CRTC" argument.

- ajax

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx