diff options
author | James Morris <jmorris@namei.org> | 2010-11-29 08:27:07 +1100 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2010-11-29 08:27:07 +1100 |
commit | 1d6d75684d869406e5bb2ac5d3ed9454f52d0cab (patch) | |
tree | afb229254bed6415407b7b7d4641f9f792109966 /drivers/gpu/drm/nouveau/nv50_calc.c | |
parent | 074e61ec3751da9ab88ee66d3818574556c03489 (diff) | |
parent | 0f639a3c5ca63dd76ee07de9b02ebf0178ce9a17 (diff) | |
download | op-kernel-dev-1d6d75684d869406e5bb2ac5d3ed9454f52d0cab.zip op-kernel-dev-1d6d75684d869406e5bb2ac5d3ed9454f52d0cab.tar.gz |
Merge branch 'master' into next
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv50_calc.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nv50_calc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/drm/nouveau/nv50_calc.c b/drivers/gpu/drm/nouveau/nv50_calc.c index 2cdc2bf..de81151 100644 --- a/drivers/gpu/drm/nouveau/nv50_calc.c +++ b/drivers/gpu/drm/nouveau/nv50_calc.c @@ -51,24 +51,28 @@ nv50_calc_pll2(struct drm_device *dev, struct pll_lims *pll, int clk, int *N, int *fN, int *M, int *P) { fixed20_12 fb_div, a, b; + u32 refclk = pll->refclk / 10; + u32 max_vco_freq = pll->vco1.maxfreq / 10; + u32 max_vco_inputfreq = pll->vco1.max_inputfreq / 10; + clk /= 10; - *P = pll->vco1.maxfreq / clk; + *P = max_vco_freq / clk; if (*P > pll->max_p) *P = pll->max_p; if (*P < pll->min_p) *P = pll->min_p; - /* *M = ceil(refclk / pll->vco.max_inputfreq); */ - a.full = dfixed_const(pll->refclk); - b.full = dfixed_const(pll->vco1.max_inputfreq); + /* *M = floor((refclk + max_vco_inputfreq) / max_vco_inputfreq); */ + a.full = dfixed_const(refclk + max_vco_inputfreq); + b.full = dfixed_const(max_vco_inputfreq); a.full = dfixed_div(a, b); - a.full = dfixed_ceil(a); + a.full = dfixed_floor(a); *M = dfixed_trunc(a); /* fb_div = (vco * *M) / refclk; */ fb_div.full = dfixed_const(clk * *P); fb_div.full = dfixed_mul(fb_div, a); - a.full = dfixed_const(pll->refclk); + a.full = dfixed_const(refclk); fb_div.full = dfixed_div(fb_div, a); /* *N = floor(fb_div); */ |