Re: [PATCH 1/2] spi: fsl-dspi: Fix clock rate scale values

2015-03-27 Thread Mark Brown
On Fri, Mar 27, 2015 at 02:51:42PM -0700, Aaron Brice wrote:
> Update baud rate scaling algorithm to get better scaling values.

Can we have a better changelog please?  What is better about the new
algorithm?


signature.asc
Description: Digital signature


[PATCH 1/2] spi: fsl-dspi: Fix clock rate scale values

2015-03-27 Thread Aaron Brice
Update baud rate scaling algorithm to get better scaling values.

Signed-off-by: Aaron Brice 
---
 drivers/spi/spi-fsl-dspi.c | 35 +--
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
index d1a3924..96cac87 100644
--- a/drivers/spi/spi-fsl-dspi.c
+++ b/drivers/spi/spi-fsl-dspi.c
@@ -148,23 +148,30 @@ static void hz_to_spi_baud(char *pbr, char *br, int 
speed_hz,
16, 32, 64, 128,
256,512,1024,   2048,
4096,   8192,   16384,  32768 };
-   int temp, i = 0, j = 0;
-
-   temp = clkrate / 2 / speed_hz;
-
-   for (i = 0; i < ARRAY_SIZE(pbr_tbl); i++)
-   for (j = 0; j < ARRAY_SIZE(brs); j++) {
-   if (pbr_tbl[i] * brs[j] >= temp) {
-   *pbr = i;
-   *br = j;
-   return;
+   int scale_needed, scale, minscale = INT_MAX;
+   int i, j;
+
+   scale_needed = clkrate / speed_hz;
+
+   for (i = 0; i < ARRAY_SIZE(brs); i++)
+   for (j = 0; j < ARRAY_SIZE(pbr_tbl); j++) {
+   scale = brs[i] * pbr_tbl[j];
+   if (scale >= scale_needed) {
+   if (scale < minscale) {
+   minscale = scale;
+   *br = i;
+   *pbr = j;
+   }
+   break;
}
}
 
-   pr_warn("Can not find valid baud rate,speed_hz is %d,clkrate is %ld\
-   ,we use the max prescaler value.\n", speed_hz, clkrate);
-   *pbr = ARRAY_SIZE(pbr_tbl) - 1;
-   *br =  ARRAY_SIZE(brs) - 1;
+   if (minscale == INT_MAX) {
+   pr_warn("Can not find valid baud rate,speed_hz is %d,clkrate is 
%ld, we use the max prescaler value.\n",
+   speed_hz, clkrate);
+   *pbr = ARRAY_SIZE(pbr_tbl) - 1;
+   *br =  ARRAY_SIZE(brs) - 1;
+   }
 }
 
 static int dspi_transfer_write(struct fsl_dspi *dspi)
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/