drm/i915: Ensure panel is on during DPMS off
authorKeith Packard <keithp@keithp.com>
Thu, 6 Oct 2011 02:53:09 +0000 (19:53 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 6 Oct 2011 02:54:29 +0000 (19:54 -0700)
If the panel is already off, we'll need to turn VDD on to execute the
(useless) DPMS off code. Yes, it would be better to just not do any of
this, but correctness, and *then* performance.

Signed-off-by: Keith Packard <keithp@keithp.com>
drivers/gpu/drm/i915/intel_dp.c

index 7e59f060a03b5a95c37da1ab235d30aa2918c149..68bcd77962e93955ecfe41c369035a468176d12d 100644 (file)
@@ -1073,6 +1073,7 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
        uint32_t dp_reg = I915_READ(intel_dp->output_reg);
 
        if (mode != DRM_MODE_DPMS_ON) {
+               ironlake_edp_panel_vdd_on(intel_dp);
                if (is_edp(intel_dp))
                        ironlake_edp_backlight_off(dev);
                intel_dp_sink_dpms(intel_dp, mode);
@@ -1080,6 +1081,7 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
                ironlake_edp_panel_off(dev);
                if (is_edp(intel_dp) && !is_pch_edp(intel_dp))
                        ironlake_edp_pll_off(encoder);
+               ironlake_edp_panel_vdd_off(intel_dp);
        } else {
                ironlake_edp_panel_vdd_on(intel_dp);
                intel_dp_sink_dpms(intel_dp, mode);