spi: mpc8xxx: Get rid of is_read
Get rid of the is_read variable, and just keep the state of the "not empty" and "not full" events in two boolean variables within the loop body. Signed-off-by: Mario Six <mario.six@gdsys.cc> Acked-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
parent
76c82afef3
commit
6409c6103a
@ -90,7 +90,7 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
|
||||
spi8xxx_t *spi = &((immap_t *)(CONFIG_SYS_IMMR))->spi;
|
||||
uint tmpdout, tmpdin, event;
|
||||
int num_blks = DIV_ROUND_UP(bitlen, 32);
|
||||
int tm, is_read = 0;
|
||||
int tm;
|
||||
uchar char_size = 32;
|
||||
|
||||
debug("%s: slave %u:%u dout %08X din %08X bitlen %u\n", __func__,
|
||||
@ -144,12 +144,14 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
|
||||
* or time out (1 second = 1000 ms)
|
||||
* The NE event must be read and cleared first
|
||||
*/
|
||||
for (tm = 0, is_read = 0; tm < SPI_TIMEOUT; ++tm) {
|
||||
for (tm = 0; tm < SPI_TIMEOUT; ++tm) {
|
||||
event = in_be32(&spi->event);
|
||||
if (event & SPI_EV_NE) {
|
||||
bool have_ne = event & SPI_EV_NE;
|
||||
bool have_nf = event & SPI_EV_NF;
|
||||
|
||||
if (have_ne) {
|
||||
tmpdin = in_be32(&spi->rx);
|
||||
setbits_be32(&spi->event, SPI_EV_NE);
|
||||
is_read = 1;
|
||||
|
||||
*(u32 *)din = (tmpdin << (32 - char_size));
|
||||
if (char_size == 32) {
|
||||
@ -163,7 +165,7 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
|
||||
* in the future put an arbitrary delay after writing
|
||||
* the device. Arbitrary delays suck, though...
|
||||
*/
|
||||
if (is_read && (event & SPI_EV_NF))
|
||||
if (have_ne && have_nf)
|
||||
break;
|
||||
}
|
||||
if (tm >= SPI_TIMEOUT)
|
||||
|
Loading…
Reference in New Issue
Block a user