diff options
Diffstat (limited to 'drivers/spi/spi-atmel.c')
| -rw-r--r-- | drivers/spi/spi-atmel.c | 20 | 
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c index 9af7841f2e8c..a2f40b1b2225 100644 --- a/drivers/spi/spi-atmel.c +++ b/drivers/spi/spi-atmel.c @@ -180,11 +180,17 @@  	  | SPI_BF(name, value))  /* Register access macros */ +#ifdef CONFIG_AVR32  #define spi_readl(port, reg) \  	__raw_readl((port)->regs + SPI_##reg)  #define spi_writel(port, reg, value) \  	__raw_writel((value), (port)->regs + SPI_##reg) - +#else +#define spi_readl(port, reg) \ +	readl_relaxed((port)->regs + SPI_##reg) +#define spi_writel(port, reg, value) \ +	writel_relaxed((value), (port)->regs + SPI_##reg) +#endif  /* use PIO for small transfers, avoiding DMA setup/teardown overhead and   * cache operations; better heuristics consider wordsize and bitrate.   */ @@ -764,17 +770,17 @@ static void atmel_spi_pdc_next_xfer(struct spi_master *master,  			(unsigned long long)xfer->rx_dma);  	} -	/* REVISIT: We're waiting for ENDRX before we start the next +	/* REVISIT: We're waiting for RXBUFF before we start the next  	 * transfer because we need to handle some difficult timing -	 * issues otherwise. If we wait for ENDTX in one transfer and -	 * then starts waiting for ENDRX in the next, it's difficult -	 * to tell the difference between the ENDRX interrupt we're -	 * actually waiting for and the ENDRX interrupt of the +	 * issues otherwise. If we wait for TXBUFE in one transfer and +	 * then starts waiting for RXBUFF in the next, it's difficult +	 * to tell the difference between the RXBUFF interrupt we're +	 * actually waiting for and the RXBUFF interrupt of the  	 * previous transfer.  	 *  	 * It should be doable, though. Just not now...  	 */ -	spi_writel(as, IER, SPI_BIT(ENDRX) | SPI_BIT(OVRES)); +	spi_writel(as, IER, SPI_BIT(RXBUFF) | SPI_BIT(OVRES));  	spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN));  }  |