diff options
Diffstat (limited to 'drivers/spi/atmel_spi.c')
| -rw-r--r-- | drivers/spi/atmel_spi.c | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c index f4b1bad22..52594e352 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; |