spi: core: Use master->max_speed_hz as transfer speed when xfer->speed_hz > master...
authorAxel Lin <axel.lin@ingics.com>
Mon, 17 Mar 2014 02:08:12 +0000 (10:08 +0800)
committerMark Brown <broonie@linaro.org>
Mon, 17 Mar 2014 15:46:25 +0000 (15:46 +0000)
When xfer->speed_hz is greater than master->max_speed_hz, it's generally safe
to use master->max_speed_hz as transfer speed.
Thus use master->max_speed_hz as transfer speed rather than return error when
xfer->speed_hz > master->max_speed_hz.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi.c

index 9d1405440223a9c85325034c72acfe80d1fddcbf..38e1c315bb1326d48ff301cbe58c78440d1a4c90 100644 (file)
@@ -1653,12 +1653,13 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
                message->frame_length += xfer->len;
                if (!xfer->bits_per_word)
                        xfer->bits_per_word = spi->bits_per_word;
-               if (!xfer->speed_hz) {
+
+               if (!xfer->speed_hz)
                        xfer->speed_hz = spi->max_speed_hz;
-                       if (master->max_speed_hz &&
-                           xfer->speed_hz > master->max_speed_hz)
-                               xfer->speed_hz = master->max_speed_hz;
-               }
+
+               if (master->max_speed_hz &&
+                   xfer->speed_hz > master->max_speed_hz)
+                       xfer->speed_hz = master->max_speed_hz;
 
                if (master->bits_per_word_mask) {
                        /* Only 32 bits fit in the mask */
@@ -1687,9 +1688,6 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
                if (xfer->speed_hz && master->min_speed_hz &&
                    xfer->speed_hz < master->min_speed_hz)
                        return -EINVAL;
-               if (xfer->speed_hz && master->max_speed_hz &&
-                   xfer->speed_hz > master->max_speed_hz)
-                       return -EINVAL;
 
                if (xfer->tx_buf && !xfer->tx_nbits)
                        xfer->tx_nbits = SPI_NBITS_SINGLE;