]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
spi: Fix OCTAL mode support
authorPatrice Chotard <patrice.chotard@foss.st.com>
Tue, 18 Jun 2024 13:29:51 +0000 (15:29 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 18 Jun 2024 13:48:27 +0000 (14:48 +0100)
Add OCTAL mode support.
Issue detected using "--octal" spidev_test's option.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Link: https://msgid.link/r/20240618132951.2743935-4-patrice.chotard@foss.st.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c
include/linux/spi/spi.h

index 9bc9fd10d538d2b61643f35608a93e445645968c..9da736d51a2ba4dac70762c39eb78aaa116cbd67 100644 (file)
@@ -4156,7 +4156,8 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
                                return -EINVAL;
                        if (xfer->tx_nbits != SPI_NBITS_SINGLE &&
                                xfer->tx_nbits != SPI_NBITS_DUAL &&
-                               xfer->tx_nbits != SPI_NBITS_QUAD)
+                               xfer->tx_nbits != SPI_NBITS_QUAD &&
+                               xfer->tx_nbits != SPI_NBITS_OCTAL)
                                return -EINVAL;
                        if ((xfer->tx_nbits == SPI_NBITS_DUAL) &&
                                !(spi->mode & (SPI_TX_DUAL | SPI_TX_QUAD)))
@@ -4171,7 +4172,8 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
                                return -EINVAL;
                        if (xfer->rx_nbits != SPI_NBITS_SINGLE &&
                                xfer->rx_nbits != SPI_NBITS_DUAL &&
-                               xfer->rx_nbits != SPI_NBITS_QUAD)
+                               xfer->rx_nbits != SPI_NBITS_QUAD &&
+                               xfer->rx_nbits != SPI_NBITS_OCTAL)
                                return -EINVAL;
                        if ((xfer->rx_nbits == SPI_NBITS_DUAL) &&
                                !(spi->mode & (SPI_RX_DUAL | SPI_RX_QUAD)))
index e8e1e798924f4cbf939648d2d0c60360ce079ed1..98fdef6e28f2a79bae853710ffa978e13414f440 100644 (file)
@@ -1085,12 +1085,13 @@ struct spi_transfer {
        unsigned        dummy_data:1;
        unsigned        cs_off:1;
        unsigned        cs_change:1;
-       unsigned        tx_nbits:3;
-       unsigned        rx_nbits:3;
+       unsigned        tx_nbits:4;
+       unsigned        rx_nbits:4;
        unsigned        timestamped:1;
 #define        SPI_NBITS_SINGLE        0x01 /* 1-bit transfer */
 #define        SPI_NBITS_DUAL          0x02 /* 2-bit transfer */
 #define        SPI_NBITS_QUAD          0x04 /* 4-bit transfer */
+#define        SPI_NBITS_OCTAL 0x08 /* 8-bit transfer */
        u8              bits_per_word;
        struct spi_delay        delay;
        struct spi_delay        cs_change_delay;