spi: spidev_test: add support for word delay
authorJonas Rebmann <jre@pengutronix.de>
Thu, 7 Nov 2024 15:07:31 +0000 (16:07 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 7 Nov 2024 15:25:50 +0000 (15:25 +0000)
Support setting the word delay using the -w/--word-delay command line
parameter. Note that spidev exposes word delay only as an u8, allowing
for a maximum of 255us of delay to be inserted.

Signed-off-by: Jonas Rebmann <jre@pengutronix.de>
Link: https://patch.msgid.link/20241107-spidev-test-word-delay-v1-1-d4bba5569e39@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
tools/spi/spidev_test.c

index 9179942..f2135d6 100644 (file)
@@ -42,6 +42,7 @@ static char *input_file;
 static char *output_file;
 static uint32_t speed = 500000;
 static uint16_t delay;
+static uint16_t word_delay;
 static int verbose;
 static int transfer_size;
 static int iterations;
@@ -124,6 +125,7 @@ static void transfer(int fd, uint8_t const *tx, uint8_t const *rx, size_t len)
                .rx_buf = (unsigned long)rx,
                .len = len,
                .delay_usecs = delay,
+               .word_delay_usecs = word_delay,
                .speed_hz = speed,
                .bits_per_word = bits,
        };
@@ -172,11 +174,12 @@ static void transfer(int fd, uint8_t const *tx, uint8_t const *rx, size_t len)
 
 static void print_usage(const char *prog)
 {
-       printf("Usage: %s [-2348CDFHILMNORSZbdilopsv]\n", prog);
+       printf("Usage: %s [-2348CDFHILMNORSZbdilopsvw]\n", prog);
        puts("general device settings:\n"
                 "  -D --device         device to use (default /dev/spidev1.1)\n"
                 "  -s --speed          max speed (Hz)\n"
                 "  -d --delay          delay (usec)\n"
+                "  -w --word-delay     word delay (usec)\n"
                 "  -l --loop           loopback\n"
                 "spi mode:\n"
                 "  -H --cpha           clock phase\n"
@@ -213,6 +216,7 @@ static void parse_opts(int argc, char *argv[])
                        { "device",        1, 0, 'D' },
                        { "speed",         1, 0, 's' },
                        { "delay",         1, 0, 'd' },
+                       { "word-delay",    1, 0, 'w' },
                        { "loop",          0, 0, 'l' },
                        { "cpha",          0, 0, 'H' },
                        { "cpol",          0, 0, 'O' },
@@ -237,7 +241,7 @@ static void parse_opts(int argc, char *argv[])
                };
                int c;
 
-               c = getopt_long(argc, argv, "D:s:d:b:i:o:lHOLC3ZFMNR248p:vS:I:",
+               c = getopt_long(argc, argv, "D:s:d:w:b:i:o:lHOLC3ZFMNR248p:vS:I:",
                                lopts, NULL);
 
                if (c == -1)
@@ -253,6 +257,9 @@ static void parse_opts(int argc, char *argv[])
                case 'd':
                        delay = atoi(optarg);
                        break;
+               case 'w':
+                       word_delay = atoi(optarg);
+                       break;
                case 'b':
                        bits = atoi(optarg);
                        break;