spi: loopback-test: spi_check_rx_ranges can get always done
authorMartin Sperl <kernel@martin.sperl.org>
Tue, 22 Dec 2015 18:03:25 +0000 (18:03 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 5 Jan 2016 19:12:47 +0000 (19:12 +0000)
The spi_check_rx_ranges can always get executed independent of
if we have a real loopback situation.

Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-loopback-test.c

index 81fa906..7f79a77 100644 (file)
@@ -489,7 +489,18 @@ static int spi_test_check_loopback_result(struct spi_device *spi,
        struct spi_transfer *xfer;
        u8 rxb, txb;
        size_t i;
+       int ret;
+
+       /* checks rx_buffer pattern are valid with loopback or without */
+       ret = spi_check_rx_ranges(spi, msg, rx);
+       if (ret)
+               return ret;
 
+       /* if we run without loopback, then return now */
+       if (!loopback)
+               return 0;
+
+       /* if applicable to transfer check that rx_buf is equal to tx_buf */
        list_for_each_entry(xfer, &msg->transfers, transfer_list) {
                /* if there is no rx, then no check is needed */
                if (!xfer->rx_buf)
@@ -521,7 +532,7 @@ static int spi_test_check_loopback_result(struct spi_device *spi,
                }
        }
 
-       return spi_check_rx_ranges(spi, msg, rx);
+       return 0;
 
 mismatch_error:
        dev_err(&spi->dev,
@@ -847,10 +858,8 @@ int spi_test_execute_msg(struct spi_device *spi, struct spi_test *test,
                        goto exit;
                }
 
-               /* run rx-tests when in loopback mode */
-               if (loopback)
-                       ret = spi_test_check_loopback_result(spi, msg,
-                                                            tx, rx);
+               /* run rx-buffer tests */
+               ret = spi_test_check_loopback_result(spi, msg, tx, rx);
        }
 
        /* if requested or on error dump message (including data) */