Skip to contentSkip to conversation

spi: core: Use master->max_speed_hz as transfer speed when xfer->speed_hz > master->max_speed_hz

RFC PATCH Applied Axel Lin 3 participants 4 messages Mar 17, 2014 SPI

lore
Share & tools
lore

Axel Lin

author
#0 lore raw

RFC PATCH 1/1 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.

---
Hi Guenter,
Does this patch fix the issue you encounter?
Regards,
Axel

 drivers/spi/spi.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/spi/spi.c +6 -8
index 454a523..26b331d 100644
@@ -1844,12 +1844,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 */
@@ -1878,9 +1879,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;
Signature · 8 lines
1.8.1.2



--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#1 lore raw
Quoted 11 lines · Axel Lin

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.

---
Hi Guenter,
Does this patch fix the issue you encounter?
Regards,
Axel

I'll test it and let you know.

Guenter

Quoted 28 lines
  drivers/spi/spi.c | 14 ++++++--------
  1 file changed, 6 insertions(+), 8 deletions(-)
drivers/spi/spi.c +6 -5
index 454a523..26b331d 100644
@@ -1844,12 +1844,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 */

drivers/spi/spi.c static int __spi_validate(struct spi_device *spi, struct spi_message *message) · line 1884

Quoted 9 lines
drivers/spi/spi.c +0 -3
@@ -1878,9 +1879,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;

--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

Tested-by Reviewed-by on v1 1/1
#2 lore raw
In reply to Axel Lin
Quoted 6 lines · Axel Lin

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.

Guenter

Quoted 33 lines

---
Hi Guenter,
Does this patch fix the issue you encounter?
Regards,
Axel

  drivers/spi/spi.c | 14 ++++++--------
  1 file changed, 6 insertions(+), 8 deletions(-)
drivers/spi/spi.c +6 -5
index 454a523..26b331d 100644
@@ -1844,12 +1844,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 */

drivers/spi/spi.c static int __spi_validate(struct spi_device *spi, struct spi_message *message) · line 1884

Quoted 9 lines
drivers/spi/spi.c +0 -3
@@ -1878,9 +1879,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;

--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

Applied
#3 lore raw
In reply to Axel Lin
Quoted 4 lines · Axel Lin

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.

Applied, thanks.