diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-11-06 20:33:32 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-12 08:36:23 +0100 |
commit | 1913518a464d76c98ebb1e41a85e7161f02c002d (patch) | |
tree | 67bba079fddcd512550a47242cd12757ff76bc65 /drivers/spi/atmel_spi.c | |
parent | e55e5cd0fd064788f0a9389cfcabb1a0fc507f9e (diff) | |
download | barebox-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.c | 14 |
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); |