mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-02 09:30:43 +09:00
spi: mpc8xxx: Re-order transfer setup
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>
This commit is contained in:
parent
85fa265530
commit
a1c178e4c7
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user