diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2016-10-02 08:22:35 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-10-21 07:09:37 -0400 |
commit | e4be7053b9d3aa0a97b311ad77528d8b32236590 (patch) | |
tree | c00fbe2b1ce027241d07c1d8d1d56f7c2773cecb /drivers/spi/spi-fsl-espi.c | |
parent | b497eb024531b712f9d2c6af0bb55ca558a2674e (diff) |
spi: fsl-espi: reject MSB-first transfers with word sizes other than 8 or 16
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>
Diffstat (limited to 'drivers/spi/spi-fsl-espi.c')
-rw-r--r-- | drivers/spi/spi-fsl-espi.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c index 1f97cce615d3..65bb70d3bfc4 100644 --- a/drivers/spi/spi-fsl-espi.c +++ b/drivers/spi/spi-fsl-espi.c | |||
@@ -153,6 +153,7 @@ static int fsl_espi_check_message(struct spi_message *m) | |||
153 | 153 | ||
154 | first = list_first_entry(&m->transfers, struct spi_transfer, | 154 | first = list_first_entry(&m->transfers, struct spi_transfer, |
155 | transfer_list); | 155 | transfer_list); |
156 | |||
156 | list_for_each_entry(t, &m->transfers, transfer_list) { | 157 | list_for_each_entry(t, &m->transfers, transfer_list) { |
157 | if (first->bits_per_word != t->bits_per_word || | 158 | if (first->bits_per_word != t->bits_per_word || |
158 | first->speed_hz != t->speed_hz) { | 159 | first->speed_hz != t->speed_hz) { |
@@ -161,6 +162,15 @@ static int fsl_espi_check_message(struct spi_message *m) | |||
161 | } | 162 | } |
162 | } | 163 | } |
163 | 164 | ||
165 | /* ESPI supports MSB-first transfers for word size 8 / 16 only */ | ||
166 | if (!(m->spi->mode & SPI_LSB_FIRST) && first->bits_per_word != 8 && | ||
167 | first->bits_per_word != 16) { | ||
168 | dev_err(mspi->dev, | ||
169 | "MSB-first transfer not supported for wordsize %u\n", | ||
170 | first->bits_per_word); | ||
171 | return -EINVAL; | ||
172 | } | ||
173 | |||
164 | return 0; | 174 | return 0; |
165 | } | 175 | } |
166 | 176 | ||