]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/spi/atmel_spi.c
atmel_spi: fix dmachain oops with DEBUG enabled
[linux-2.6-omap-h63xx.git] / drivers / spi / atmel_spi.c
index 545519a063b803ab80936397c4f44134b6ac46c3..293b7cab3e57021afcfeddcd2a5b007fbfba229a 100644 (file)
@@ -198,6 +198,11 @@ static void atmel_spi_next_xfer(struct spi_master *master,
                        len >>= 1;
                spi_writel(as, RCR, len);
                spi_writel(as, TCR, len);
+
+               dev_dbg(&msg->spi->dev,
+                       "  start xfer %p: len %u tx %p/%08x rx %p/%08x\n",
+                       xfer, xfer->len, xfer->tx_buf, xfer->tx_dma,
+                       xfer->rx_buf, xfer->rx_dma);
        } else {
                xfer = as->next_transfer;
                remaining = as->next_remaining_bytes;
@@ -208,8 +213,8 @@ static void atmel_spi_next_xfer(struct spi_master *master,
 
        if (remaining > 0)
                len = remaining;
-       else if (!atmel_spi_xfer_is_last(msg, xfer) &&
-               atmel_spi_xfer_can_be_chained(xfer)) {
+       else if (!atmel_spi_xfer_is_last(msg, xfer)
+                       && atmel_spi_xfer_can_be_chained(xfer)) {
                xfer = list_entry(xfer->transfer_list.next,
                                struct spi_transfer, transfer_list);
                len = xfer->len;
@@ -230,6 +235,11 @@ static void atmel_spi_next_xfer(struct spi_master *master,
                        len >>= 1;
                spi_writel(as, RNCR, len);
                spi_writel(as, TNCR, len);
+
+               dev_dbg(&msg->spi->dev,
+                       "  next xfer %p: len %u tx %p/%08x rx %p/%08x\n",
+                       xfer, xfer->len, xfer->tx_buf, xfer->tx_dma,
+                       xfer->rx_buf, xfer->rx_dma);
        } else {
                spi_writel(as, RNCR, 0);
                spi_writel(as, TNCR, 0);
@@ -246,12 +256,6 @@ static void atmel_spi_next_xfer(struct spi_master *master,
         * It should be doable, though. Just not now...
         */
        spi_writel(as, IER, SPI_BIT(ENDRX) | SPI_BIT(OVRES));
-
-       dev_dbg(&msg->spi->dev,
-               "  start xfer %p: len %u tx %p/%08x rx %p/%08x imr %03x\n",
-               xfer, xfer->len, xfer->tx_buf, xfer->tx_dma,
-               xfer->rx_buf, xfer->rx_dma, spi_readl(as, IMR));
-
        spi_writel(as, PTCR, SPI_BIT(TXTEN) | SPI_BIT(RXTEN));
 }