summaryrefslogtreecommitdiffstats
path: root/drivers/spi/atmel_spi.c
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-11-06 20:33:32 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-11-12 08:36:23 +0100
commit1913518a464d76c98ebb1e41a85e7161f02c002d (patch)
tree67bba079fddcd512550a47242cd12757ff76bc65 /drivers/spi/atmel_spi.c
parente55e5cd0fd064788f0a9389cfcabb1a0fc507f9e (diff)
downloadbarebox-1913518a464d76c98ebb1e41a85e7161f02c002d.tar.gz
barebox-1913518a464d76c98ebb1e41a85e7161f02c002d.tar.xz
atmel_spi: add sanity check in setup
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/spi/atmel_spi.c')
-rw-r--r--drivers/spi/atmel_spi.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index dbf6af8328..17b91eba23 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -87,6 +87,20 @@ static int atmel_spi_setup(struct spi_device *spi)
unsigned int bits = spi->bits_per_word;
unsigned long bus_hz;
+ if (spi->chip_select > spi->master->num_chipselect) {
+ dev_dbg(&spi->dev,
+ "setup: invalid chipselect %u (%u defined)\n",
+ spi->chip_select, spi->master->num_chipselect);
+ return -EINVAL;
+ }
+
+ if (bits < 8 || bits > 16) {
+ dev_dbg(&spi->dev,
+ "setup: invalid bits_per_word %u (8 to 16)\n",
+ bits);
+ return -EINVAL;
+ }
+
if (spi->controller_data) {
csr = (u32)spi->controller_data;
spi_writel(as, CSR0, csr);