| From d11b6a8053361f44bac83573b64408687944ebb1 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com> |
| Date: Wed, 4 Sep 2013 18:25:25 +0300 |
| Subject: drm/i915: Make intel_crtc_active() available outside intel_pm.c |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Move intel_crtc_active() to intel_display.c and make it available |
| elsewhere as well. |
| |
| intel_edp_psr_match_conditions() already has one open coded copy, |
| so replace that one with a call to intel_crtc_active(). |
| |
| v2: Copy paste a big comment from danvet's mail explaining |
| when we can ditch the extra checks |
| |
| Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 20ddf6650458d08d42c3c3f8240a0d00a7e9ee97) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 17 +++++++++++++++++ |
| drivers/gpu/drm/i915/intel_dp.c | 3 +-- |
| drivers/gpu/drm/i915/intel_drv.h | 2 ++ |
| drivers/gpu/drm/i915/intel_pm.c | 11 ----------- |
| 4 files changed, 20 insertions(+), 13 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
| index b3d136685ba8..aa3b9c6f7a98 100644 |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -733,6 +733,23 @@ vlv_find_best_dpll(const intel_limit_t *limit, struct drm_crtc *crtc, |
| return true; |
| } |
| |
| +bool intel_crtc_active(struct drm_crtc *crtc) |
| +{ |
| + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| + |
| + /* Be paranoid as we can arrive here with only partial |
| + * state retrieved from the hardware during setup. |
| + * |
| + * We can ditch the adjusted_mode.clock check as soon |
| + * as Haswell has gained clock readout/fastboot support. |
| + * |
| + * We can ditch the crtc->fb check as soon as we can |
| + * properly reconstruct framebuffers. |
| + */ |
| + return intel_crtc->active && crtc->fb && |
| + intel_crtc->config.adjusted_mode.clock; |
| +} |
| + |
| enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, |
| enum pipe pipe) |
| { |
| diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c |
| index a89a6c6f9b23..cbbd36913109 100644 |
| --- a/drivers/gpu/drm/i915/intel_dp.c |
| +++ b/drivers/gpu/drm/i915/intel_dp.c |
| @@ -1639,8 +1639,7 @@ static bool intel_edp_psr_match_conditions(struct intel_dp *intel_dp) |
| } |
| |
| intel_crtc = to_intel_crtc(crtc); |
| - if (!intel_crtc->active || !crtc->fb || |
| - !intel_crtc->config.adjusted_mode.clock) { |
| + if (!intel_crtc_active(crtc)) { |
| DRM_DEBUG_KMS("crtc not active for PSR\n"); |
| dev_priv->no_psr_reason = PSR_CRTC_NOT_ACTIVE; |
| return false; |
| diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h |
| index 2597027001db..cd7ed03094ee 100644 |
| --- a/drivers/gpu/drm/i915/intel_drv.h |
| +++ b/drivers/gpu/drm/i915/intel_drv.h |
| @@ -810,4 +810,6 @@ extern void ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe |
| int dotclock); |
| extern void i915_disable_vga_mem(struct drm_device *dev); |
| |
| +extern bool intel_crtc_active(struct drm_crtc *crtc); |
| + |
| #endif /* __INTEL_DRV_H__ */ |
| diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c |
| index fb53207af99b..3ecdfef3b619 100644 |
| --- a/drivers/gpu/drm/i915/intel_pm.c |
| +++ b/drivers/gpu/drm/i915/intel_pm.c |
| @@ -43,17 +43,6 @@ |
| * i915.i915_enable_fbc parameter |
| */ |
| |
| -static bool intel_crtc_active(struct drm_crtc *crtc) |
| -{ |
| - struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| - |
| - /* Be paranoid as we can arrive here with only partial |
| - * state retrieved from the hardware during setup. |
| - */ |
| - return intel_crtc->active && crtc->fb && |
| - intel_crtc->config.adjusted_mode.clock; |
| -} |
| - |
| static void i8xx_disable_fbc(struct drm_device *dev) |
| { |
| struct drm_i915_private *dev_priv = dev->dev_private; |
| -- |
| 1.8.5.rc3 |
| |