[Intel-gfx] [PATCH 1/2] drm/i915: Use DIV_ROUND_CLOSEST() to calculate dot/vco

2013-10-14 Thread ville . syrjala
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)
-- 
1.8.1.5

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 1/2] drm/i915: Use DIV_ROUND_CLOSEST() to calculate dot/vco

2013-10-14 Thread Jesse Barnes
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