spi: spi-mpc512x-psc: let transmiter/receiver enabled when in xfer loop
authorAnatolij Gustschin <agust@denx.de>
Mon, 1 Apr 2013 15:31:19 +0000 (17:31 +0200)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 9 Apr 2013 16:53:39 +0000 (17:53 +0100)
There is no need to disable transmitter/receiver after each loop
iteration and re-enable it for next loop iteration. Enable the
transmitter/receiver before xfer loop starts and disable it when
the whole transfer is done.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/spi/spi-mpc512x-psc.c

index da60f26..dfddf33 100644 (file)
@@ -149,6 +149,9 @@ static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi,
        in_8(&psc->mode);
        out_8(&psc->mode, 0x0);
 
+       /* enable transmiter/receiver */
+       out_8(&psc->command, MPC52xx_PSC_TX_ENABLE | MPC52xx_PSC_RX_ENABLE);
+
        while (len) {
                int count;
                int i;
@@ -177,10 +180,6 @@ static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi,
                out_be32(&fifo->txisr, MPC512x_PSC_FIFO_EMPTY);
                out_be32(&fifo->tximr, MPC512x_PSC_FIFO_EMPTY);
 
-               /* enable transmiter/receiver */
-               out_8(&psc->command,
-                     MPC52xx_PSC_TX_ENABLE | MPC52xx_PSC_RX_ENABLE);
-
                wait_for_completion(&mps->done);
 
                mdelay(1);
@@ -205,9 +204,6 @@ static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi,
                while (in_be32(&fifo->rxcnt)) {
                        in_8(&fifo->rxdata_8);
                }
-
-               out_8(&psc->command,
-                     MPC52xx_PSC_TX_DISABLE | MPC52xx_PSC_RX_DISABLE);
        }
        /* disable transmiter/receiver and fifo interrupt */
        out_8(&psc->command, MPC52xx_PSC_TX_DISABLE | MPC52xx_PSC_RX_DISABLE);