This is an automated email from Gerrit. "Laszlo Sitzer <dlsit...@gmail.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6715
-- gerrit commit 1d4c5eb4cd6ec60b9985e55e823e02b59365acbe Author: Laszlo Sitzer <dlsit...@gmail.com> Date: Fri Nov 19 14:25:03 2021 +0100 linuxgpiod: Refactor to allow passing chip number after pin number (or use default from gpiochip). Change-Id: I1af4026cf3fcd040fbbe8fbef3bac7b39df9bb2b Signed-off-by: Laszlo Sitzer <dlsit...@gmail.com> diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c index 940e42797..1bc4c58ef 100644 --- a/src/jtag/drivers/linuxgpiod.c +++ b/src/jtag/drivers/linuxgpiod.c @@ -28,7 +28,7 @@ static int srst_gpio = -1; static int swclk_gpio = -1; static int swdio_gpio = -1; static int led_gpio = -1; - +static int gpiochip = -1; static int tck_gpiochip = -1; static int tms_gpiochip = -1; static int tdi_gpiochip = -1; @@ -498,55 +498,67 @@ COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionums) COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tck) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tck_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tck_gpiochip); - command_print(CMD, "LinuxGPIOD num: tck = %d", tck_gpio); + command_print(CMD, "LinuxGPIOD num: tck = %d, chip = %d", tck_gpio, tck_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tms) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tms_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tms_gpiochip); - command_print(CMD, "LinuxGPIOD num: tms = %d", tms_gpio); + command_print(CMD, "LinuxGPIOD num: tms = %d, chip = %d", tms_gpio, tms_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tdo) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tdo_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tdo_gpiochip); - command_print(CMD, "LinuxGPIOD num: tdo = %d", tdo_gpio); + command_print(CMD, "LinuxGPIOD num: tdo = %d, chip = %d", tdo_gpio, tdo_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tdi) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tdi_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tdi_gpiochip); - command_print(CMD, "LinuxGPIOD num: tdi = %d", tdi_gpio); + command_print(CMD, "LinuxGPIOD num: tdi = %d, chip = %d", tdi_gpio, tdi_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_srst) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], srst_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], srst_gpiochip); - command_print(CMD, "LinuxGPIOD num: srst = %d", srst_gpio); + command_print(CMD, "LinuxGPIOD num: srst = %d, chip = %d", srst_gpio, srst_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_trst) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], trst_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], trst_gpiochip); - command_print(CMD, "LinuxGPIOD num: trst = %d", trst_gpio); + command_print(CMD, "LinuxGPIOD num: trst = %d, chip = %d", trst_gpio, trst_gpiochip); return ERROR_OK; } @@ -568,109 +580,53 @@ COMMAND_HANDLER(linuxgpiod_handle_swd_gpionums) COMMAND_HANDLER(linuxgpiod_handle_swd_gpionum_swclk) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], swclk_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], swclk_gpiochip); - command_print(CMD, "LinuxGPIOD num: swclk = %d", swclk_gpio); + command_print(CMD, "LinuxGPIOD num: swclk = %d, chip = %d", swclk_gpio, swclk_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_swd_gpionum_swdio) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], swdio_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], swdio_gpiochip); - command_print(CMD, "LinuxGPIOD num: swdio = %d", swdio_gpio); + command_print(CMD, "LinuxGPIOD num: swdio = %d, chip = %d", swdio_gpio, swdio_gpiochip); return ERROR_OK; } COMMAND_HANDLER(linuxgpiod_handle_gpionum_led) { - if (CMD_ARGC == 1) + if (CMD_ARGC > 0) COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], led_gpio); + if (CMD_ARGC > 1) + COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], led_gpiochip); - command_print(CMD, "LinuxGPIOD num: led = %d", led_gpio); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_tck_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tck_gpiochip); - - command_print(CMD, "LinuxGPIOD tck_gpiochip = %d", tck_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_tms_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tms_gpiochip); - - command_print(CMD, "LinuxGPIOD tms_gpiochip = %d", tms_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_tdi_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tdi_gpiochip); - - command_print(CMD, "LinuxGPIOD tdi_gpiochip = %d", tdi_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_tdo_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tdo_gpiochip); - - command_print(CMD, "LinuxGPIOD tdo_gpiochip = %d", tdo_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_trst_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], trst_gpiochip); - - command_print(CMD, "LinuxGPIOD trst_gpiochip = %d", trst_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_srst_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], srst_gpiochip); - - command_print(CMD, "LinuxGPIOD srst_gpiochip = %d", srst_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_swclk_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], swclk_gpiochip); - - command_print(CMD, "LinuxGPIOD swclk_gpiochip = %d", swclk_gpiochip); + command_print(CMD, "LinuxGPIOD num: led = %d, chip = %d", led_gpio, led_gpiochip); return ERROR_OK; } -COMMAND_HANDLER(linuxgpiod_handle_swdio_gpiochip) +COMMAND_HANDLER(linuxgpiod_handle_gpiochip) { - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], swdio_gpiochip); - - command_print(CMD, "LinuxGPIOD swdio_gpiochip = %d", swdio_gpiochip); - return ERROR_OK; -} - -COMMAND_HANDLER(linuxgpiod_handle_led_gpiochip) -{ - if (CMD_ARGC == 1) - COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], led_gpiochip); + if (CMD_ARGC == 1) { + COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], gpiochip); + tck_gpiochip = gpiochip; + tms_gpiochip = gpiochip; + tdi_gpiochip = gpiochip; + tdo_gpiochip = gpiochip; + trst_gpiochip = gpiochip; + srst_gpiochip = gpiochip; + swclk_gpiochip = gpiochip; + swdio_gpiochip = gpiochip; + led_gpiochip = gpiochip; + } - command_print(CMD, "LinuxGPIOD led_gpiochip = %d", led_gpiochip); + command_print(CMD, "LinuxGPIOD gpiochip = %d", gpiochip); return ERROR_OK; } @@ -686,42 +642,42 @@ static const struct command_registration linuxgpiod_subcommand_handlers[] = { .name = "tck_num", .handler = linuxgpiod_handle_jtag_gpionum_tck, .mode = COMMAND_CONFIG, - .help = "gpio number for tck.", + .help = "gpio number for tck (optionally followed by gpio chip number).", .usage = "tck", }, { .name = "tms_num", .handler = linuxgpiod_handle_jtag_gpionum_tms, .mode = COMMAND_CONFIG, - .help = "gpio number for tms.", + .help = "gpio number for tms (optionally followed by gpio chip number).", .usage = "tms", }, { .name = "tdo_num", .handler = linuxgpiod_handle_jtag_gpionum_tdo, .mode = COMMAND_CONFIG, - .help = "gpio number for tdo.", + .help = "gpio number for tdo (optionally followed by gpio chip number).", .usage = "tdo", }, { .name = "tdi_num", .handler = linuxgpiod_handle_jtag_gpionum_tdi, .mode = COMMAND_CONFIG, - .help = "gpio number for tdi.", + .help = "gpio number for tdi (optionally followed by gpio chip number).", .usage = "tdi", }, { .name = "srst_num", .handler = linuxgpiod_handle_jtag_gpionum_srst, .mode = COMMAND_CONFIG, - .help = "gpio number for srst.", + .help = "gpio number for srst (optionally followed by gpio chip number).", .usage = "srst", }, { .name = "trst_num", .handler = linuxgpiod_handle_jtag_gpionum_trst, .mode = COMMAND_CONFIG, - .help = "gpio number for trst.", + .help = "gpio number for trst (optionally followed by gpio chip number).", .usage = "trst", }, { @@ -735,85 +691,29 @@ static const struct command_registration linuxgpiod_subcommand_handlers[] = { .name = "swclk_num", .handler = linuxgpiod_handle_swd_gpionum_swclk, .mode = COMMAND_CONFIG, - .help = "gpio number for swclk.", + .help = "gpio number for swclk (optionally followed by gpio chip number).", .usage = "swclk", }, { .name = "swdio_num", .handler = linuxgpiod_handle_swd_gpionum_swdio, .mode = COMMAND_CONFIG, - .help = "gpio number for swdio.", + .help = "gpio number for swdio (optionally followed by gpio chip number).", .usage = "swdio", }, { .name = "led_num", .handler = linuxgpiod_handle_gpionum_led, .mode = COMMAND_CONFIG, - .help = "gpio number for LED.", + .help = "gpio number for LED (optionally followed by gpio chip number).", .usage = "led", }, { - .name = "tck_gpiochip", - .handler = linuxgpiod_handle_tck_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the tck gpiochip.", - .usage = "tck_gpiochip", - }, - { - .name = "tms_gpiochip", - .handler = linuxgpiod_handle_tms_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the tms_gpiochip.", - .usage = "tms_gpiochip", - }, - { - .name = "tdi_gpiochip", - .handler = linuxgpiod_handle_tdi_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the tdi_gpiochip.", - .usage = "tdi_gpiochip", - }, - { - .name = "tdo_gpiochip", - .handler = linuxgpiod_handle_tdo_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the tdo_gpiochip.", - .usage = "tdo_gpiochip", - }, - { - .name = "trst_gpiochip", - .handler = linuxgpiod_handle_trst_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the trst_gpiochip.", - .usage = "trst_gpiochip", - }, - { - .name = "srst_gpiochip", - .handler = linuxgpiod_handle_srst_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the srst_gpiochip.", - .usage = "srst_gpiochip", - }, - { - .name = "swclk_gpiochip", - .handler = linuxgpiod_handle_swclk_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the swclk_gpiochip.", - .usage = "swclk_gpiochip", - }, - { - .name = "swdio_gpiochip", - .handler = linuxgpiod_handle_swdio_gpiochip, - .mode = COMMAND_CONFIG, - .help = "number of the swdio_gpiochip.", - .usage = "swdio_gpiochip", - }, - { - .name = "led_gpiochip", - .handler = linuxgpiod_handle_led_gpiochip, + .name = "gpiochip", + .handler = linuxgpiod_handle_gpiochip, .mode = COMMAND_CONFIG, - .help = "number of the led_gpiochip.", - .usage = "led_gpiochip", + .help = "number of the gpiochip.", + .usage = "gpiochip", }, COMMAND_REGISTRATION_DONE }; --