summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorMario Six <mario.six@gdsys.cc>2019-04-29 01:58:45 +0530
committerJagan Teki <jagan@amarulasolutions.com>2019-06-10 17:59:48 +0530
commite4da4c2e0e3f4686c104e45a1967587423f04e04 (patch)
tree0ee065172cf1b28fed813041c2b0df45365d25ad /drivers/spi
parent6409c6103a869271a0a2c109f5262c94a0609add (diff)
spi: mpc8xxx: Simplify logic a bit
We do nothing in the loop if the "not empty" event was not detected. To simplify the logic, check if this is the case, and skip the execution of the loop early to reduce the nesting level and flag checking. Signed-off-by: Mario Six <mario.six@gdsys.cc> Acked-by: Jagan Teki <jagan@amarulasolutions.com>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/mpc8xxx_spi.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/spi/mpc8xxx_spi.c b/drivers/spi/mpc8xxx_spi.c
index 962ef710f8..a2e698ea17 100644
--- a/drivers/spi/mpc8xxx_spi.c
+++ b/drivers/spi/mpc8xxx_spi.c
@@ -149,25 +149,28 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
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);
-
- *(u32 *)din = (tmpdin << (32 - char_size));
- if (char_size == 32) {
- /* Advance output buffer by 32 bits */
- din += 4;
- }
+ if (!have_ne)
+ continue;
+
+ tmpdin = in_be32(&spi->rx);
+ setbits_be32(&spi->event, SPI_EV_NE);
+
+ *(u32 *)din = (tmpdin << (32 - char_size));
+ if (char_size == 32) {
+ /* Advance output buffer by 32 bits */
+ din += 4;
}
+
/*
* Only bail when we've had both NE and NF events.
* This will cause timeouts on RO devices, so maybe
* in the future put an arbitrary delay after writing
* the device. Arbitrary delays suck, though...
*/
- if (have_ne && have_nf)
+ if (have_nf)
break;
}
+
if (tm >= SPI_TIMEOUT)
debug("*** %s: Time out during SPI transfer\n",
__func__);