summaryrefslogtreecommitdiff
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
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>
-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 962ef710f8c..a2e698ea170 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__);