| From 5a53a12165befa51a0a7c6def19ce1f856b1c73a Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Fri, 31 May 2013 17:49:17 +0200 |
| Subject: drm/i915: fix up the edp power well check |
| |
| Now that we track the cpu transcoder we need accurately in the pipe |
| config we can finally fix up the transcoder check. With the current |
| code eDP on port D will be broken since we'd errornously cut the |
| power. |
| |
| For reference see |
| |
| commit 2124b72e6283c4e84a55e71077fee91793f4c801 |
| Author: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Date: Fri Mar 22 14:07:23 2013 -0300 |
| |
| drm/i915: don't disable the power well yet |
| |
| v2: |
| - Kill the now outdated comment (Paulo) |
| - Add the missing crtc->base.enabled check and consolidate it (Paulo) |
| - Smash all checks together, looks neater that way. |
| |
| v3: Kill the unused encoder variable. |
| |
| Cc: Takashi Iwai <tiwai@suse.de> |
| Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit e7a639c445e1f7c44adc1665539fa8e3af0b8e30) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 18 ++++-------------- |
| 1 file changed, 4 insertions(+), 14 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
| index 959ebc7a8283..b16c95720f7b 100644 |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -5793,23 +5793,13 @@ static void haswell_modeset_global_resources(struct drm_device *dev) |
| { |
| bool enable = false; |
| struct intel_crtc *crtc; |
| - struct intel_encoder *encoder; |
| |
| list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) { |
| - if (crtc->pipe != PIPE_A && crtc->base.enabled) |
| - enable = true; |
| - /* XXX: Should check for edp transcoder here, but thanks to init |
| - * sequence that's not yet available. Just in case desktop eDP |
| - * on PORT D is possible on haswell, too. */ |
| - /* Even the eDP panel fitter is outside the always-on well. */ |
| - if (crtc->config.pch_pfit.size && crtc->base.enabled) |
| - enable = true; |
| - } |
| + if (!crtc->base.enabled) |
| + continue; |
| |
| - list_for_each_entry(encoder, &dev->mode_config.encoder_list, |
| - base.head) { |
| - if (encoder->type != INTEL_OUTPUT_EDP && |
| - encoder->connectors_active) |
| + if (crtc->pipe != PIPE_A || crtc->config.pch_pfit.size || |
| + crtc->config.cpu_transcoder != TRANSCODER_EDP) |
| enable = true; |
| } |
| |
| -- |
| 1.8.5.rc3 |
| |