aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-04-04 16:20:34 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-04-18 03:43:09 -0400
commit9a7c7890d2f05af63f98ac397597755a3c009485 (patch)
treeced923ed42844c670d598f165bfd14a5cffb3a01 /drivers/gpu/drm
parentf0b4405687f8b35173575be8493bf2af84b85091 (diff)
drm/i915: set CB tuning also for the reduce clock
Since the ratio is different, we also need to pass in the parameters for the reduced clock. Might or might not reduce flicker for the auto-downclocking on lvds/eDP. Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f235e8a48b38..b884932c2e00 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5469,7 +5469,8 @@ static void ironlake_fdi_set_m_n(struct drm_crtc *crtc)
5469} 5469}
5470 5470
5471static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc, 5471static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
5472 intel_clock_t *clock, u32 *fp) 5472 intel_clock_t *clock, u32 *fp,
5473 intel_clock_t *reduced_clock, u32 *fp2)
5473{ 5474{
5474 struct drm_crtc *crtc = &intel_crtc->base; 5475 struct drm_crtc *crtc = &intel_crtc->base;
5475 struct drm_device *dev = crtc->dev; 5476 struct drm_device *dev = crtc->dev;
@@ -5511,6 +5512,9 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
5511 if (clock->m < factor * clock->n) 5512 if (clock->m < factor * clock->n)
5512 *fp |= FP_CB_TUNE; 5513 *fp |= FP_CB_TUNE;
5513 5514
5515 if (fp2 && (reduced_clock->m < factor * reduced_clock->n))
5516 *fp2 |= FP_CB_TUNE;
5517
5514 dpll = 0; 5518 dpll = 0;
5515 5519
5516 if (is_lvds) 5520 if (is_lvds)
@@ -5626,7 +5630,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
5626 fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 | 5630 fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 |
5627 reduced_clock.m2; 5631 reduced_clock.m2;
5628 5632
5629 dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp); 5633 dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp, &reduced_clock,
5634 has_reduced_clock ? &fp2 : NULL);
5630 5635
5631 DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe); 5636 DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe);
5632 drm_mode_debug_printmodeline(mode); 5637 drm_mode_debug_printmodeline(mode);