]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/spi/spi-omap2-mcspi.c
Merge tag 'initramfs-fix-4.12-rc1' of git://github.com/stffrdhrn/linux
[karo-tx-linux.git] / drivers / spi / spi-omap2-mcspi.c
index 79800e991ccd537180866aa4671ab165a4f896f8..7275223dbcd454d879bbb7a61e2ee50479212da8 100644 (file)
@@ -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);