|
@@ -454,6 +454,8 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer,
|
|
|
int elements = 0;
|
|
|
int word_len, element_count;
|
|
|
struct omap2_mcspi_cs *cs = spi->controller_state;
|
|
|
+ void __iomem *chstat_reg = cs->base + OMAP2_MCSPI_CHSTAT0;
|
|
|
+
|
|
|
mcspi = spi_master_get_devdata(spi->master);
|
|
|
mcspi_dma = &mcspi->dma_channels[spi->chip_select];
|
|
|
count = xfer->len;
|
|
@@ -549,8 +551,8 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer,
|
|
|
if (l & OMAP2_MCSPI_CHCONF_TURBO) {
|
|
|
elements--;
|
|
|
|
|
|
- if (likely(mcspi_read_cs_reg(spi, OMAP2_MCSPI_CHSTAT0)
|
|
|
- & OMAP2_MCSPI_CHSTAT_RXS)) {
|
|
|
+ if (!mcspi_wait_for_reg_bit(chstat_reg,
|
|
|
+ OMAP2_MCSPI_CHSTAT_RXS)) {
|
|
|
u32 w;
|
|
|
|
|
|
w = mcspi_read_cs_reg(spi, OMAP2_MCSPI_RX0);
|
|
@@ -568,8 +570,7 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer,
|
|
|
return count;
|
|
|
}
|
|
|
}
|
|
|
- if (likely(mcspi_read_cs_reg(spi, OMAP2_MCSPI_CHSTAT0)
|
|
|
- & OMAP2_MCSPI_CHSTAT_RXS)) {
|
|
|
+ if (!mcspi_wait_for_reg_bit(chstat_reg, OMAP2_MCSPI_CHSTAT_RXS)) {
|
|
|
u32 w;
|
|
|
|
|
|
w = mcspi_read_cs_reg(spi, OMAP2_MCSPI_RX0);
|