]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spi: mpc8xxx: Re-order transfer setup
authorMario Six <mario.six@gdsys.cc>
Sun, 28 Apr 2019 20:28:50 +0000 (01:58 +0530)
committerJagan Teki <jagan@amarulasolutions.com>
Mon, 10 Jun 2019 12:29:49 +0000 (17:59 +0530)
Minize the time the adapter is disabled (via SPI_MODE_EN
clearing/setting) to just the character length setting, and only set up
the temporary data writing variable right before we need it, so there is
a more clear distinction between setting up the SPI adapter, and setting
up the data to be written.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
Acked-by: Jagan Teki <jagan@amarulasolutions.com>
drivers/spi/mpc8xxx_spi.c

index 1dd5bd97990812785d337cac2581d62b1d40dc53..1e7c0144c260de218a6b6c233f0b321ccb98b2d3 100644 (file)
@@ -116,9 +116,6 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
                u32 tmpdout = 0;
                uchar xfer_bitlen = (bitlen >= 32 ? 32 : bitlen);
 
-               /* Shift data so it's msb-justified */
-               tmpdout = *(u32 *)dout >> (32 - xfer_bitlen);
-
                clrbits_be32(&spi->mode, SPI_MODE_EN);
 
                /* Set up length for this transfer */
@@ -130,14 +127,17 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
                else /* more than 16 bits -> full 32 bit transfer */
                        set_char_len(spi, 0);
 
+               setbits_be32(&spi->mode, SPI_MODE_EN);
+
+               /* Shift data so it's msb-justified */
+               tmpdout = *(u32 *)dout >> (32 - xfer_bitlen);
+
                if (bitlen > 16) {
                        /* Set up the next iteration if sending > 32 bits */
                        bitlen -= 32;
                        dout += 4;
                }
 
-               setbits_be32(&spi->mode, SPI_MODE_EN);
-
                /* Write the data out */
                out_be32(&spi->tx, tmpdout);