spi: mpc8xxx: Simplify logic a bit
authorMario Six <mario.six@gdsys.cc>
Sun, 28 Apr 2019 20:28:45 +0000 (01:58 +0530)
committerJagan Teki <jagan@amarulasolutions.com>
Mon, 10 Jun 2019 12:29:48 +0000 (17:59 +0530)
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>
drivers/spi/mpc8xxx_spi.c

index 962ef710f8cf8835504c429e85f61fd2f49a0ad7..a2e698ea170292a1ed552d70d4bedc1ca6ee5def 100644 (file)
@@ -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__);