提交 e0d2d3bd 编写于 作者: B Bo Shen 提交者: Andreas Bießmann

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: NBo Shen <voice.shen@atmel.com>
[fix warning about incompatible parameter]
Signed-off-by: NJosh Wu <josh.wu@atmel.com>
Signed-off-by: NAndreas Bießmann <andreas.devel@googlemail.com>
上级 cac423a7
......@@ -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;
......
......@@ -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 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册