summaryrefslogtreecommitdiff
path: root/drivers/spi/atmel_spi.c
diff options
context:
space:
mode:
authorBo Shen <voice.shen@atmel.com>2013-04-16 23:42:42 +0000
committerAndreas Bießmann <andreas.devel@googlemail.com>2013-05-12 16:36:11 +0200
commite0d2d3bd29e304ebd1f3ba131cf9d8a404534c03 (patch)
treed3fc6aff6b52dac8aa945374cfc7f7aa80c9b535 /drivers/spi/atmel_spi.c
parentcac423a730d3506154744485af1bbc1cd3a1e6a8 (diff)
downloadu-boot-imx-e0d2d3bd29e304ebd1f3ba131cf9d8a404534c03.zip
u-boot-imx-e0d2d3bd29e304ebd1f3ba131cf9d8a404534c03.tar.gz
u-boot-imx-e0d2d3bd29e304ebd1f3ba131cf9d8a404534c03.tar.bz2
spi: atmel_spi: using ip version to check whether has wdrbt
Using IP version to check whether it has wdrbt bit in mode register Tested in at91sam9x5ek and at91sam9n12ek. Signed-off-by: Bo Shen <voice.shen@atmel.com> [fix warning about incompatible parameter] Signed-off-by: Josh Wu <josh.wu@atmel.com> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Diffstat (limited to 'drivers/spi/atmel_spi.c')
-rw-r--r--drivers/spi/atmel_spi.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index f4b1bad..52594e3 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -30,6 +30,15 @@
#include "atmel_spi.h"
+static int spi_has_wdrbt(struct atmel_spi_slave *slave)
+{
+ unsigned int ver;
+
+ ver = spi_readl(slave, VERSION);
+
+ return (ATMEL_SPI_VERSION_REV(ver) >= 0x210);
+}
+
void spi_init()
{
@@ -90,10 +99,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
as->regs = regs;
as->mr = ATMEL_SPI_MR_MSTR | ATMEL_SPI_MR_MODFDIS
-#if defined(CONFIG_AT91SAM9X5) || defined(CONFIG_AT91SAM9M10G45)
- | ATMEL_SPI_MR_WDRBT
-#endif
| ATMEL_SPI_MR_PCS(~(1 << cs) & 0xf);
+ if (spi_has_wdrbt(as))
+ as->mr |= ATMEL_SPI_MR_WDRBT;
+
spi_writel(as, CSR(cs), csrx);
return &as->slave;