summaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-fsl-espi.c
diff options
context:
space:
mode:
authorHeiner Kallweit <hkallweit1@gmail.com>2016-10-02 08:22:35 -0400
committerMark Brown <broonie@kernel.org>2016-10-21 07:09:37 -0400
commite4be7053b9d3aa0a97b311ad77528d8b32236590 (patch)
treec00fbe2b1ce027241d07c1d8d1d56f7c2773cecb /drivers/spi/spi-fsl-espi.c
parentb497eb024531b712f9d2c6af0bb55ca558a2674e (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.c10
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