mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-18 03:06:43 +00:00
spi: pxa2xx: choose closest lower speed
As per discussion [1] the best choice is to set closest speed which is not going over the asked one. Do the same approach for Intel Quark boards. [1] http://www.spinics.net/lists/linux-spi/msg03389.html Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
289de5541c
commit
3ad4806223
@ -730,7 +730,7 @@ static unsigned int quark_x1000_get_clk_div(int rate, u32 *dds)
|
||||
mul = (1 << 24) >> 1;
|
||||
|
||||
/* Calculate initial quot */
|
||||
q1 = DIV_ROUND_CLOSEST(fref1, rate);
|
||||
q1 = DIV_ROUND_UP(fref1, rate);
|
||||
|
||||
/* Scale q1 if it's too big */
|
||||
if (q1 > 256) {
|
||||
@ -755,7 +755,7 @@ static unsigned int quark_x1000_get_clk_div(int rate, u32 *dds)
|
||||
|
||||
/* Case 2 */
|
||||
|
||||
q2 = DIV_ROUND_CLOSEST(fref2, rate);
|
||||
q2 = DIV_ROUND_UP(fref2, rate);
|
||||
r2 = abs(fref2 / q2 - rate);
|
||||
|
||||
/*
|
||||
@ -774,13 +774,13 @@ static unsigned int quark_x1000_get_clk_div(int rate, u32 *dds)
|
||||
mul = (1 << 24) * 2 / 5;
|
||||
}
|
||||
|
||||
/* Check case 3 only If the divisor is big enough */
|
||||
/* Check case 3 only if the divisor is big enough */
|
||||
if (fref / rate >= 80) {
|
||||
u64 fssp;
|
||||
u32 m;
|
||||
|
||||
/* Calculate initial quot */
|
||||
q1 = DIV_ROUND_CLOSEST(fref, rate);
|
||||
q1 = DIV_ROUND_UP(fref, rate);
|
||||
m = (1 << 24) / q1;
|
||||
|
||||
/* Get the remainder */
|
||||
|
Loading…
x
Reference in New Issue
Block a user