aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi.c
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2014-03-16 22:08:12 -0400
committerMark Brown <broonie@linaro.org>2014-03-17 11:46:25 -0400
commita6f87fad7b5132f026592729ccf65b995cdec35d (patch)
tree24bb5827e380833ab8066b0ac9ed8fa57a8cda19 /drivers/spi/spi.c
parent6ea312936d68b557766dafa9a3c4617e14ffa076 (diff)
spi: core: Use master->max_speed_hz as transfer speed when xfer->speed_hz > master->max_speed_hz
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>
Diffstat (limited to 'drivers/spi/spi.c')
-rw-r--r--drivers/spi/spi.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 9d1405440223..38e1c315bb13 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1653,12 +1653,13 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
1653 message->frame_length += xfer->len; 1653 message->frame_length += xfer->len;
1654 if (!xfer->bits_per_word) 1654 if (!xfer->bits_per_word)
1655 xfer->bits_per_word = spi->bits_per_word; 1655 xfer->bits_per_word = spi->bits_per_word;
1656 if (!xfer->speed_hz) { 1656
1657 if (!xfer->speed_hz)
1657 xfer->speed_hz = spi->max_speed_hz; 1658 xfer->speed_hz = spi->max_speed_hz;
1658 if (master->max_speed_hz && 1659
1659 xfer->speed_hz > master->max_speed_hz) 1660 if (master->max_speed_hz &&
1660 xfer->speed_hz = master->max_speed_hz; 1661 xfer->speed_hz > master->max_speed_hz)
1661 } 1662 xfer->speed_hz = master->max_speed_hz;
1662 1663
1663 if (master->bits_per_word_mask) { 1664 if (master->bits_per_word_mask) {
1664 /* Only 32 bits fit in the mask */ 1665 /* Only 32 bits fit in the mask */
@@ -1687,9 +1688,6 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
1687 if (xfer->speed_hz && master->min_speed_hz && 1688 if (xfer->speed_hz && master->min_speed_hz &&
1688 xfer->speed_hz < master->min_speed_hz) 1689 xfer->speed_hz < master->min_speed_hz)
1689 return -EINVAL; 1690 return -EINVAL;
1690 if (xfer->speed_hz && master->max_speed_hz &&
1691 xfer->speed_hz > master->max_speed_hz)
1692 return -EINVAL;
1693 1691
1694 if (xfer->tx_buf && !xfer->tx_nbits) 1692 if (xfer->tx_buf && !xfer->tx_nbits)
1695 xfer->tx_nbits = SPI_NBITS_SINGLE; 1693 xfer->tx_nbits = SPI_NBITS_SINGLE;