]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
spi: fsl-espi: reject MSB-first transfers with word sizes other than 8 or 16
authorHeiner Kallweit <hkallweit1@gmail.com>
Sun, 2 Oct 2016 12:22:35 +0000 (14:22 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 21 Oct 2016 11:09:37 +0000 (12:09 +0100)
According to the ESPI spec MSB-first transfers are supported for
word size 8 and 16 only.

Check for this and reject MSB-first transfers with other word sizes.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-espi.c

index 1f97cce615d3d092afb6f3e439f337cc22127e08..65bb70d3bfc4f2388f1dc2b7189ddee5b56d5e9b 100644 (file)
@@ -153,6 +153,7 @@ static int fsl_espi_check_message(struct spi_message *m)
 
        first = list_first_entry(&m->transfers, struct spi_transfer,
                                 transfer_list);
+
        list_for_each_entry(t, &m->transfers, transfer_list) {
                if (first->bits_per_word != t->bits_per_word ||
                    first->speed_hz != t->speed_hz) {
@@ -161,6 +162,15 @@ static int fsl_espi_check_message(struct spi_message *m)
                }
        }
 
+       /* ESPI supports MSB-first transfers for word size 8 / 16 only */
+       if (!(m->spi->mode & SPI_LSB_FIRST) && first->bits_per_word != 8 &&
+           first->bits_per_word != 16) {
+               dev_err(mspi->dev,
+                       "MSB-first transfer not supported for wordsize %u\n",
+                       first->bits_per_word);
+               return -EINVAL;
+       }
+
        return 0;
 }