On Mon, 14 Oct 2013 14:50:30 +0300
ville.syrj...@linux.intel.com wrote:
From: Ville Syrjälä ville.syrj...@linux.intel.com
Rounding down when calculating the dot/vco frequencies doesn't make much
sense. Round to closest should give slightly nicer answers.
Signed-off-by: Ville Syrjälä ville.syrj...@linux.intel.com
---
drivers/gpu/drm/i915/intel_display.c | 12 ++--
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c
b/drivers/gpu/drm/i915/intel_display.c
index fbd028e..baa6ef6 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -329,8 +329,8 @@ static void vlv_clock(int refclk, intel_clock_t *clock)
{
clock-m = clock-m1 * clock-m2;
clock-p = clock-p1 * clock-p2;
- clock-vco = refclk * clock-m / clock-n;
- clock-dot = clock-vco / clock-p;
+ clock-vco = DIV_ROUND_CLOSEST(refclk * clock-m, clock-n);
+ clock-dot = DIV_ROUND_CLOSEST(clock-vco, clock-p);
}
/**
@@ -430,8 +430,8 @@ static void pineview_clock(int refclk, intel_clock_t
*clock)
{
clock-m = clock-m2 + 2;
clock-p = clock-p1 * clock-p2;
- clock-vco = refclk * clock-m / clock-n;
- clock-dot = clock-vco / clock-p;
+ clock-vco = DIV_ROUND_CLOSEST(refclk * clock-m, clock-n);
+ clock-dot = DIV_ROUND_CLOSEST(clock-vco, clock-p);
}
static uint32_t i9xx_dpll_compute_m(struct dpll *dpll)
@@ -443,8 +443,8 @@ static void i9xx_clock(int refclk, intel_clock_t *clock)
{
clock-m = i9xx_dpll_compute_m(clock);
clock-p = clock-p1 * clock-p2;
- clock-vco = refclk * clock-m / (clock-n + 2);
- clock-dot = clock-vco / clock-p;
+ clock-vco = DIV_ROUND_CLOSEST(refclk * clock-m, clock-n + 2);
+ clock-dot = DIV_ROUND_CLOSEST(clock-vco, clock-p);
}
#define INTELPllInvalid(s) do { /* DRM_DEBUG(s); */ return false; } while
(0)
Reviewed-by: Jesse Barnes jbar...@virtuousgeek.org
--
Jesse Barnes, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx