mirror of
https://github.com/torvalds/linux.git
synced 2024-11-08 13:11:45 +00:00
drm/i915: Use DIV_ROUND_CLOSEST() to calculate dot/vco
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.syrjala@linux.intel.com> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
540b5d0276
commit
fb03ac0106
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user