aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/intel_display.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index c7e05ed36e1d..d1d698c99f54 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2066,17 +2066,25 @@ static void intel_disable_pipe(struct intel_crtc *crtc)
2066 assert_cursor_disabled(dev_priv, pipe); 2066 assert_cursor_disabled(dev_priv, pipe);
2067 assert_sprites_disabled(dev_priv, pipe); 2067 assert_sprites_disabled(dev_priv, pipe);
2068 2068
2069 /* Don't disable pipe A or pipe A PLLs if needed */
2070 if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE))
2071 return;
2072
2073 reg = PIPECONF(cpu_transcoder); 2069 reg = PIPECONF(cpu_transcoder);
2074 val = I915_READ(reg); 2070 val = I915_READ(reg);
2075 if ((val & PIPECONF_ENABLE) == 0) 2071 if ((val & PIPECONF_ENABLE) == 0)
2076 return; 2072 return;
2077 2073
2078 I915_WRITE(reg, val & ~PIPECONF_ENABLE); 2074 /*
2079 intel_wait_for_pipe_off(crtc); 2075 * Double wide has implications for planes
2076 * so best keep it disabled when not needed.
2077 */
2078 if (crtc->config.double_wide)
2079 val &= ~PIPECONF_DOUBLE_WIDE;
2080
2081 /* Don't disable pipe or pipe PLLs if needed */
2082 if (!(pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE))
2083 val &= ~PIPECONF_ENABLE;
2084
2085 I915_WRITE(reg, val);
2086 if ((val & PIPECONF_ENABLE) == 0)
2087 intel_wait_for_pipe_off(crtc);
2080} 2088}
2081 2089
2082/* 2090/*