@@ -172,60 +172,72 @@ static void transfer(int fd, uint8_t const *tx, uint8_t const *rx, size_t len)
172172
173173static void print_usage (const char * prog )
174174{
175- printf ("Usage: %s [-DsbdlHOLC3vpNR24SI]\n" , prog );
176- puts (" -D --device device to use (default /dev/spidev1.1)\n"
177- " -s --speed max speed (Hz)\n"
178- " -d --delay delay (usec)\n"
179- " -b --bpw bits per word\n"
180- " -i --input input data from a file (e.g. \"test.bin\")\n"
181- " -o --output output data to a file (e.g. \"results.bin\")\n"
182- " -l --loop loopback\n"
183- " -H --cpha clock phase\n"
184- " -O --cpol clock polarity\n"
185- " -L --lsb least significant bit first\n"
186- " -C --cs-high chip select active high\n"
187- " -3 --3wire SI/SO signals shared\n"
188- " -v --verbose Verbose (show tx buffer)\n"
189- " -p Send data (e.g. \"1234\\xde\\xad\")\n"
190- " -N --no-cs no chip select\n"
191- " -R --ready slave pulls low to pause\n"
192- " -2 --dual dual transfer\n"
193- " -4 --quad quad transfer\n"
194- " -8 --octal octal transfer\n"
195- " -S --size transfer size\n"
196- " -I --iter iterations\n" );
175+ printf ("Usage: %s [-2348CDFHILMNORSZbdilopsv]\n" , prog );
176+ puts ("general device settings:\n"
177+ " -D --device device to use (default /dev/spidev1.1)\n"
178+ " -s --speed max speed (Hz)\n"
179+ " -d --delay delay (usec)\n"
180+ " -l --loop loopback\n"
181+ "spi mode:\n"
182+ " -H --cpha clock phase\n"
183+ " -O --cpol clock polarity\n"
184+ " -F --rx-cpha-flip flip CPHA on Rx only xfer\n"
185+ "number of wires for transmission:\n"
186+ " -2 --dual dual transfer\n"
187+ " -4 --quad quad transfer\n"
188+ " -8 --octal octal transfer\n"
189+ " -3 --3wire SI/SO signals shared\n"
190+ " -Z --3wire-hiz high impedance turnaround\n"
191+ "data:\n"
192+ " -i --input input data from a file (e.g. \"test.bin\")\n"
193+ " -o --output output data to a file (e.g. \"results.bin\")\n"
194+ " -p Send data (e.g. \"1234\\xde\\xad\")\n"
195+ " -S --size transfer size\n"
196+ " -I --iter iterations\n"
197+ "additional parameters:\n"
198+ " -b --bpw bits per word\n"
199+ " -L --lsb least significant bit first\n"
200+ " -C --cs-high chip select active high\n"
201+ " -N --no-cs no chip select\n"
202+ " -R --ready slave pulls low to pause\n"
203+ " -M --mosi-idle-low leave mosi line low when idle\n"
204+ "misc:\n"
205+ " -v --verbose Verbose (show tx buffer)\n" );
197206 exit (1 );
198207}
199208
200209static void parse_opts (int argc , char * argv [])
201210{
202211 while (1 ) {
203212 static const struct option lopts [] = {
204- { "device" , 1 , 0 , 'D' },
205- { "speed" , 1 , 0 , 's' },
206- { "delay" , 1 , 0 , 'd' },
207- { "bpw" , 1 , 0 , 'b' },
208- { "input" , 1 , 0 , 'i' },
209- { "output" , 1 , 0 , 'o' },
210- { "loop" , 0 , 0 , 'l' },
211- { "cpha" , 0 , 0 , 'H' },
212- { "cpol" , 0 , 0 , 'O' },
213- { "lsb" , 0 , 0 , 'L' },
214- { "cs-high" , 0 , 0 , 'C' },
215- { "3wire" , 0 , 0 , '3' },
216- { "no-cs" , 0 , 0 , 'N' },
217- { "ready" , 0 , 0 , 'R' },
218- { "dual" , 0 , 0 , '2' },
219- { "verbose" , 0 , 0 , 'v' },
220- { "quad" , 0 , 0 , '4' },
221- { "octal" , 0 , 0 , '8' },
222- { "size" , 1 , 0 , 'S' },
223- { "iter" , 1 , 0 , 'I' },
213+ { "device" , 1 , 0 , 'D' },
214+ { "speed" , 1 , 0 , 's' },
215+ { "delay" , 1 , 0 , 'd' },
216+ { "loop" , 0 , 0 , 'l' },
217+ { "cpha" , 0 , 0 , 'H' },
218+ { "cpol" , 0 , 0 , 'O' },
219+ { "rx-cpha-flip" , 0 , 0 , 'F' },
220+ { "dual" , 0 , 0 , '2' },
221+ { "quad" , 0 , 0 , '4' },
222+ { "octal" , 0 , 0 , '8' },
223+ { "3wire" , 0 , 0 , '3' },
224+ { "3wire-hiz" , 0 , 0 , 'Z' },
225+ { "input" , 1 , 0 , 'i' },
226+ { "output" , 1 , 0 , 'o' },
227+ { "size" , 1 , 0 , 'S' },
228+ { "iter" , 1 , 0 , 'I' },
229+ { "bpw" , 1 , 0 , 'b' },
230+ { "lsb" , 0 , 0 , 'L' },
231+ { "cs-high" , 0 , 0 , 'C' },
232+ { "no-cs" , 0 , 0 , 'N' },
233+ { "ready" , 0 , 0 , 'R' },
234+ { "mosi-idle-low" , 0 , 0 , 'M' },
235+ { "verbose" , 0 , 0 , 'v' },
224236 { NULL , 0 , 0 , 0 },
225237 };
226238 int c ;
227239
228- c = getopt_long (argc , argv , "D:s:d:b:i:o:lHOLC3NR248p :vS:I:" ,
240+ c = getopt_long (argc , argv , "D:s:d:b:i:o:lHOLC3ZFMNR248p :vS:I:" ,
229241 lopts , NULL );
230242
231243 if (c == -1 )
@@ -268,6 +280,15 @@ static void parse_opts(int argc, char *argv[])
268280 case '3' :
269281 mode |= SPI_3WIRE ;
270282 break ;
283+ case 'Z' :
284+ mode |= SPI_3WIRE_HIZ ;
285+ break ;
286+ case 'F' :
287+ mode |= SPI_RX_CPHA_FLIP ;
288+ break ;
289+ case 'M' :
290+ mode |= SPI_MOSI_IDLE_LOW ;
291+ break ;
271292 case 'N' :
272293 mode |= SPI_NO_CS ;
273294 break ;
0 commit comments