SPI_BIT
spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS));
if (pending & SPI_BIT(OVRES)) {
spi_writel(as, IDR, SPI_BIT(OVRES));
} else if (pending & (SPI_BIT(RDRF) | SPI_BIT(RXFTHF))) {
if (pending & SPI_BIT(OVRES)) {
spi_writel(as, IDR, (SPI_BIT(RXBUFF) | SPI_BIT(ENDRX)
| SPI_BIT(OVRES)));
} else if (pending & (SPI_BIT(RXBUFF) | SPI_BIT(ENDRX))) {
csr |= SPI_BIT(CPOL);
csr |= SPI_BIT(NCPHA);
csr |= SPI_BIT(CSAAT);
if (spi_readl(as, SR) & SPI_BIT(TXEMPTY))
while (spi_readl(as, SR) & SPI_BIT(RDRF))
spi_writel(as, CR, SPI_BIT(SWRST));
spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
spi_writel(as, CR, SPI_BIT(FIFOEN));
mr |= SPI_BIT(FDIV);
mr |= SPI_BIT(WDRBT);
spi_writel(as, MR, mr | SPI_BIT(MODFDIS) | SPI_BIT(MSTR));
spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS));
spi_writel(as, CR, SPI_BIT(SPIEN));
spi_writel(as, CR, SPI_BIT(SWRST));
spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
spi_writel(as, CR, SPI_BIT(SWRST));
spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
while (spi_readl(as, SR) & SPI_BIT(RDRF)) {
(status & SPI_BIT(TXEMPTY)), 1, 1000);
new_polarity = (asd->csr & SPI_BIT(CPOL)) != 0;
u32 cpol = (spi->mode & SPI_CPOL) ? SPI_BIT(CPOL) : 0;
if ((csr ^ cpol) & SPI_BIT(CPOL))
csr ^ SPI_BIT(CPOL));
spi_writel(as, CR, SPI_BIT(LASTXFER));
while (spi_readl(as, SR) & SPI_BIT(RDRF)) {
spi_writel(as, IER, SPI_BIT(RDRF) | SPI_BIT(OVRES));
spi_writel(as, CR, SPI_BIT(RXFCLR) | SPI_BIT(TXFCLR));
spi_writel(as, IER, SPI_BIT(RXFTHF) | SPI_BIT(OVRES));
spi_writel(as, IER, SPI_BIT(OVRES));
spi_writel(as, IDR, SPI_BIT(OVRES));
spi_writel(as, PTCR, SPI_BIT(RXTDIS) | SPI_BIT(TXTDIS));
spi_writel(as, IER, SPI_BIT(RXBUFF) | SPI_BIT(OVRES));
spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN));