aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2013-09-04 11:25:25 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-09-16 17:34:56 -0400
commit20ddf6650458d08d42c3c3f8240a0d00a7e9ee97 (patch)
tree95f1f584784fe2734c4b1e5d2fa4b389881f8227
parentca73b4f026751254da5c98ac8c3667b16fb00245 (diff)
drm/i915: Make intel_crtc_active() available outside intel_pm.c
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>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c17
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c3
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c11
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 8b5fa95f9478..234a77d0ee4e 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,
733 return true; 733 return true;
734} 734}
735 735
736bool intel_crtc_active(struct drm_crtc *crtc)
737{
738 struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
739
740 /* Be paranoid as we can arrive here with only partial
741 * state retrieved from the hardware during setup.
742 *
743 * We can ditch the adjusted_mode.clock check as soon
744 * as Haswell has gained clock readout/fastboot support.
745 *
746 * We can ditch the crtc->fb check as soon as we can
747 * properly reconstruct framebuffers.
748 */
749 return intel_crtc->active && crtc->fb &&
750 intel_crtc->config.adjusted_mode.clock;
751}
752
736enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, 753enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv,
737 enum pipe pipe) 754 enum pipe pipe)
738{ 755{
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 0d9372e75f69..e61ba90fb1b3 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1628,8 +1628,7 @@ static bool intel_edp_psr_match_conditions(struct intel_dp *intel_dp)
1628 } 1628 }
1629 1629
1630 intel_crtc = to_intel_crtc(crtc); 1630 intel_crtc = to_intel_crtc(crtc);
1631 if (!intel_crtc->active || !crtc->fb || 1631 if (!intel_crtc_active(crtc)) {
1632 !intel_crtc->config.adjusted_mode.clock) {
1633 DRM_DEBUG_KMS("crtc not active for PSR\n"); 1632 DRM_DEBUG_KMS("crtc not active for PSR\n");
1634 dev_priv->no_psr_reason = PSR_CRTC_NOT_ACTIVE; 1633 dev_priv->no_psr_reason = PSR_CRTC_NOT_ACTIVE;
1635 return false; 1634 return false;
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index e87ba822deb8..8306940f0ae7 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -808,4 +808,6 @@ extern int intel_dotclock_calculate(int link_freq,
808extern void ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config, 808extern void ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config,
809 int dotclock); 809 int dotclock);
810 810
811extern bool intel_crtc_active(struct drm_crtc *crtc);
812
811#endif /* __INTEL_DRV_H__ */ 813#endif /* __INTEL_DRV_H__ */
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 4016ca8d151a..9cf3aa525414 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -43,17 +43,6 @@
43 * i915.i915_enable_fbc parameter 43 * i915.i915_enable_fbc parameter
44 */ 44 */
45 45
46static bool intel_crtc_active(struct drm_crtc *crtc)
47{
48 struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
49
50 /* Be paranoid as we can arrive here with only partial
51 * state retrieved from the hardware during setup.
52 */
53 return intel_crtc->active && crtc->fb &&
54 intel_crtc->config.adjusted_mode.clock;
55}
56
57static void i8xx_disable_fbc(struct drm_device *dev) 46static void i8xx_disable_fbc(struct drm_device *dev)
58{ 47{
59 struct drm_i915_private *dev_priv = dev->dev_private; 48 struct drm_i915_private *dev_priv = dev->dev_private;