* [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls
@ 2013-04-04 20:20 Daniel Vetter
2013-04-04 20:20 ` [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds Daniel Vetter
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Daniel Vetter @ 2013-04-04 20:20 UTC (permalink / raw)
To: Intel Graphics Development; +Cc: Daniel Vetter, Paulo Zanoni
commit de13a2e3f88a4da8e85063b6de37096795079e41
Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
Date: Thu Sep 20 18:36:05 2012 -0300
drm/i915: extract compute_dpll from ironlake_crtc_mode_set
missed the subtle adjustment of the FP1 register. Fix this up by
passing a pointer around instead of the value.
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/intel_display.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 1b2c744..f623f97 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5374,7 +5374,7 @@ static void ironlake_fdi_set_m_n(struct drm_crtc *crtc)
}
static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
- intel_clock_t *clock, u32 fp)
+ intel_clock_t *clock, u32 *fp)
{
struct drm_crtc *crtc = &intel_crtc->base;
struct drm_device *dev = crtc->dev;
@@ -5414,7 +5414,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
factor = 20;
if (clock->m < factor * clock->n)
- fp |= FP_CB_TUNE;
+ *fp |= FP_CB_TUNE;
dpll = 0;
@@ -5531,7 +5531,7 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 |
reduced_clock.m2;
- dpll = ironlake_compute_dpll(intel_crtc, &clock, fp);
+ dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp);
DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe);
drm_mode_debug_printmodeline(mode);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds
2013-04-04 20:20 [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Daniel Vetter
@ 2013-04-04 20:20 ` Daniel Vetter
2013-04-05 20:24 ` Paulo Zanoni
2013-04-04 20:20 ` [PATCH 3/3] drm/i915: set CB tuning also for the reduce clock Daniel Vetter
2013-04-05 19:52 ` [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Paulo Zanoni
2 siblings, 1 reply; 7+ messages in thread
From: Daniel Vetter @ 2013-04-04 20:20 UTC (permalink / raw)
To: Intel Graphics Development; +Cc: Daniel Vetter
Only on IBX should we set the limiting factor to 25 unconditionally
for dual-channel mode, on CPT/PPT 25 only applies when the lvds
refclock is 100MHz.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/intel_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f623f97..cb3e23f 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5408,7 +5408,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
if (is_lvds) {
if ((intel_panel_use_ssc(dev_priv) &&
dev_priv->lvds_ssc_freq == 100) ||
- intel_is_dual_link_lvds(dev))
+ (HAS_PCH_IBX(dev) && intel_is_dual_link_lvds(dev)))
factor = 25;
} else if (is_sdvo && is_tv)
factor = 20;
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds
2013-04-04 20:20 ` [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds Daniel Vetter
@ 2013-04-05 20:24 ` Paulo Zanoni
0 siblings, 0 replies; 7+ messages in thread
From: Paulo Zanoni @ 2013-04-05 20:24 UTC (permalink / raw)
To: Daniel Vetter; +Cc: Intel Graphics Development
Hi
2013/4/4 Daniel Vetter <daniel.vetter@ffwll.ch>:
> Only on IBX should we set the limiting factor to 25 unconditionally
> for dual-channel mode, on CPT/PPT 25 only applies when the lvds
> refclock is 100MHz.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index f623f97..cb3e23f 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5408,7 +5408,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> if (is_lvds) {
> if ((intel_panel_use_ssc(dev_priv) &&
> dev_priv->lvds_ssc_freq == 100) ||
> - intel_is_dual_link_lvds(dev))
> + (HAS_PCH_IBX(dev) && intel_is_dual_link_lvds(dev)))
> factor = 25;
> } else if (is_sdvo && is_tv)
> factor = 20;
> --
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Paulo Zanoni
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] drm/i915: set CB tuning also for the reduce clock
2013-04-04 20:20 [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Daniel Vetter
2013-04-04 20:20 ` [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds Daniel Vetter
@ 2013-04-04 20:20 ` Daniel Vetter
2013-04-05 20:47 ` Paulo Zanoni
2013-04-05 19:52 ` [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Paulo Zanoni
2 siblings, 1 reply; 7+ messages in thread
From: Daniel Vetter @ 2013-04-04 20:20 UTC (permalink / raw)
To: Intel Graphics Development; +Cc: Daniel Vetter
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.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/intel_display.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index cb3e23f..c7c135c 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5374,7 +5374,8 @@ static void ironlake_fdi_set_m_n(struct drm_crtc *crtc)
}
static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
- intel_clock_t *clock, u32 *fp)
+ intel_clock_t *clock, u32 *fp,
+ intel_clock_t *reduced_clock, u32 *fp2)
{
struct drm_crtc *crtc = &intel_crtc->base;
struct drm_device *dev = crtc->dev;
@@ -5416,6 +5417,9 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
if (clock->m < factor * clock->n)
*fp |= FP_CB_TUNE;
+ if (fp2 && (reduced_clock->m < factor * reduced_clock->n))
+ *fp2 |= FP_CB_TUNE;
+
dpll = 0;
if (is_lvds)
@@ -5531,7 +5535,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 |
reduced_clock.m2;
- dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp);
+ dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp, &reduced_clock,
+ has_reduced_clock ? &fp2 : NULL);
DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe);
drm_mode_debug_printmodeline(mode);
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 3/3] drm/i915: set CB tuning also for the reduce clock
2013-04-04 20:20 ` [PATCH 3/3] drm/i915: set CB tuning also for the reduce clock Daniel Vetter
@ 2013-04-05 20:47 ` Paulo Zanoni
0 siblings, 0 replies; 7+ messages in thread
From: Paulo Zanoni @ 2013-04-05 20:47 UTC (permalink / raw)
To: Daniel Vetter; +Cc: Intel Graphics Development
Hi
2013/4/4 Daniel Vetter <daniel.vetter@ffwll.ch>:
> 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.
After this patch, my suggestion to add ironlake_calculate_fp() gets
even stronger :)
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/i915/intel_display.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index cb3e23f..c7c135c 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5374,7 +5374,8 @@ static void ironlake_fdi_set_m_n(struct drm_crtc *crtc)
> }
>
> static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> - intel_clock_t *clock, u32 *fp)
> + intel_clock_t *clock, u32 *fp,
> + intel_clock_t *reduced_clock, u32 *fp2)
> {
> struct drm_crtc *crtc = &intel_crtc->base;
> struct drm_device *dev = crtc->dev;
> @@ -5416,6 +5417,9 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> if (clock->m < factor * clock->n)
> *fp |= FP_CB_TUNE;
>
> + if (fp2 && (reduced_clock->m < factor * reduced_clock->n))
> + *fp2 |= FP_CB_TUNE;
> +
> dpll = 0;
>
> if (is_lvds)
> @@ -5531,7 +5535,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
> fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 |
> reduced_clock.m2;
>
> - dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp);
> + dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp, &reduced_clock,
> + has_reduced_clock ? &fp2 : NULL);
>
> DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe);
> drm_mode_debug_printmodeline(mode);
> --
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Paulo Zanoni
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls
2013-04-04 20:20 [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Daniel Vetter
2013-04-04 20:20 ` [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds Daniel Vetter
2013-04-04 20:20 ` [PATCH 3/3] drm/i915: set CB tuning also for the reduce clock Daniel Vetter
@ 2013-04-05 19:52 ` Paulo Zanoni
2013-04-06 17:47 ` Daniel Vetter
2 siblings, 1 reply; 7+ messages in thread
From: Paulo Zanoni @ 2013-04-05 19:52 UTC (permalink / raw)
To: Daniel Vetter; +Cc: Intel Graphics Development, Paulo Zanoni
Hi
2013/4/4 Daniel Vetter <daniel.vetter@ffwll.ch>:
> commit de13a2e3f88a4da8e85063b6de37096795079e41
> Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Date: Thu Sep 20 18:36:05 2012 -0300
>
> drm/i915: extract compute_dpll from ironlake_crtc_mode_set
>
> missed the subtle adjustment of the FP1 register. Fix this up by
> passing a pointer around instead of the value.
We could also move the whole chunk that sets "factor" and "FP_CB_TUNE"
back to ironlake_crtc_mode_set or even to a brand new
ironlake_calculate_fp(intel_crtc, clock, has_reduced_clock,
reduced_clock, &fp, &fp2). Maybe as a follow-up patch since this
version is way much easier for -stable.
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/i915/intel_display.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 1b2c744..f623f97 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5374,7 +5374,7 @@ static void ironlake_fdi_set_m_n(struct drm_crtc *crtc)
> }
>
> static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> - intel_clock_t *clock, u32 fp)
> + intel_clock_t *clock, u32 *fp)
> {
> struct drm_crtc *crtc = &intel_crtc->base;
> struct drm_device *dev = crtc->dev;
> @@ -5414,7 +5414,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> factor = 20;
>
> if (clock->m < factor * clock->n)
> - fp |= FP_CB_TUNE;
> + *fp |= FP_CB_TUNE;
>
> dpll = 0;
>
> @@ -5531,7 +5531,7 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
> fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 |
> reduced_clock.m2;
>
> - dpll = ironlake_compute_dpll(intel_crtc, &clock, fp);
> + dpll = ironlake_compute_dpll(intel_crtc, &clock, &fp);
>
> DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe);
> drm_mode_debug_printmodeline(mode);
> --
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Paulo Zanoni
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls
2013-04-05 19:52 ` [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Paulo Zanoni
@ 2013-04-06 17:47 ` Daniel Vetter
0 siblings, 0 replies; 7+ messages in thread
From: Daniel Vetter @ 2013-04-06 17:47 UTC (permalink / raw)
To: Paulo Zanoni; +Cc: Daniel Vetter, Intel Graphics Development, Paulo Zanoni
On Fri, Apr 05, 2013 at 04:52:28PM -0300, Paulo Zanoni wrote:
> Hi
>
> 2013/4/4 Daniel Vetter <daniel.vetter@ffwll.ch>:
> > commit de13a2e3f88a4da8e85063b6de37096795079e41
> > Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > Date: Thu Sep 20 18:36:05 2012 -0300
> >
> > drm/i915: extract compute_dpll from ironlake_crtc_mode_set
> >
> > missed the subtle adjustment of the FP1 register. Fix this up by
> > passing a pointer around instead of the value.
>
> We could also move the whole chunk that sets "factor" and "FP_CB_TUNE"
> back to ironlake_crtc_mode_set or even to a brand new
> ironlake_calculate_fp(intel_crtc, clock, has_reduced_clock,
> reduced_clock, &fp, &fp2). Maybe as a follow-up patch since this
> version is way much easier for -stable.
>
> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
All patches merged, thanks for the review. I didn't add a cc: stable to
this one, since no one has reported a regression yet. We can easily
backport if that changes.
I agree with your refactor idea, but until all the clock handling has
settled a bit (due to the massive pipe config reorganisation) I think we
should hold and not waste too much time with beauty-ops ;-)
Cheers, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-04-06 17:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-04 20:20 [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Daniel Vetter
2013-04-04 20:20 ` [PATCH 2/3] drm/i915: fix FP CB tuning limits for lvds Daniel Vetter
2013-04-05 20:24 ` Paulo Zanoni
2013-04-04 20:20 ` [PATCH 3/3] drm/i915: set CB tuning also for the reduce clock Daniel Vetter
2013-04-05 20:47 ` Paulo Zanoni
2013-04-05 19:52 ` [PATCH 1/3] drm/i915: fix lost FP_CB_TUNE setting for pch plls Paulo Zanoni
2013-04-06 17:47 ` Daniel Vetter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox