diff options
author | Bo Shen <voice.shen@atmel.com> | 2013-04-16 23:42:42 +0000 |
---|---|---|
committer | Andreas Bießmann <andreas.devel@googlemail.com> | 2013-05-12 16:36:11 +0200 |
commit | e0d2d3bd29e304ebd1f3ba131cf9d8a404534c03 (patch) | |
tree | d3fc6aff6b52dac8aa945374cfc7f7aa80c9b535 | |
parent | cac423a730d3506154744485af1bbc1cd3a1e6a8 (diff) | |
download | u-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>
-rw-r--r-- | drivers/spi/atmel_spi.c | 15 | ||||
-rw-r--r-- | drivers/spi/atmel_spi.h | 2 |
2 files changed, 13 insertions, 4 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; diff --git a/drivers/spi/atmel_spi.h b/drivers/spi/atmel_spi.h index 057de9a..d240945 100644 --- a/drivers/spi/atmel_spi.h +++ b/drivers/spi/atmel_spi.h @@ -64,7 +64,7 @@ #define ATMEL_SPI_CSRx_DLYBCT(x) ((x) << 24) /* Bits in VERSION */ -#define ATMEL_SPI_VERSION_REV(x) ((x) << 0) +#define ATMEL_SPI_VERSION_REV(x) ((x) & 0xfff) #define ATMEL_SPI_VERSION_MFN(x) ((x) << 16) /* Constants for CSRx:BITS */ |