On Mon, Apr 26, 2010 at 3:01 AM,  <[email protected]> wrote:
> From: Thomas Koeller <[email protected]>
>
> Computation of the clock prescaler value returned bogus results if
> the requested SPI clock was impossible to set. It now sets either
> the maximum or minimum clock frequency, as appropriate.
>
> Signed-off-by: Thomas Koeller <[email protected]>
> ---
>  drivers/spi/davinci_spi.c |   12 +++++++++---
>  1 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
> index 956f617..02e1a76 100644
> --- a/drivers/spi/davinci_spi.c
> +++ b/drivers/spi/davinci_spi.c
> @@ -153,7 +153,7 @@ static int davinci_spi_setup_transfer(struct spi_device 
> *spi,
>        struct davinci_spi *davinci_spi;
>        struct davinci_spi_platform_data *pdata;
>        u8 bits_per_word = 0;
> -       u32 hz = 0, prescale;
> +       u32 hz = 0, prescale = 0, clkspeed;
>
>        davinci_spi = spi_master_get_devdata(spi->master);
>        pdata = davinci_spi->pdata;
> @@ -190,10 +190,16 @@ static int davinci_spi_setup_transfer(struct spi_device 
> *spi,
>        set_fmt_bits(davinci_spi->base, bits_per_word & 0x1f,
>                        spi->chip_select);
>
> -       prescale = ((clk_get_rate(davinci_spi->clk) / hz) - 1) & 0xff;
> +       clkspeed = clk_get_rate(davinci_spi->clk);
> +       if (hz > clkspeed / 2)
> +               prescale = 1 << 8;
> +       if (hz < clkspeed / 256)
> +               prescale = 255 << 8;
> +       if (!prescale)
> +               prescale = ((clkspeed / hz - 1) << 8) & 0x0000ff00;

Is be appropriate to WARN_ON() or WARN_ONCE() when the clamp condition
occurs?  Particularly the condition where the minimum clock speed is
higher that the requested clock.

I'd also consider an if / else if / else structure for readability and clarity.

g.

------------------------------------------------------------------------------
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to