-COMMAND_HELPER(linuxgpiod_helper_gpionum, const char *name, int *chip, int *line)
-{
- int i = 0;
- if (CMD_ARGC > 2)
- return ERROR_COMMAND_SYNTAX_ERROR;
- if (CMD_ARGC == 2) {
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], *chip);
- i = 1;
- }
- if (CMD_ARGC > 0)
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[i], *line);
- command_print(CMD, "LinuxGPIOD %s: chip = %d, num = %d", name, *chip, *line);
- return ERROR_OK;
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionums)
-{
- if (CMD_ARGC == 4) {
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], tck_gpio);
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], tms_gpio);
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[2], tdi_gpio);
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[3], tdo_gpio);
- } else if (CMD_ARGC != 0) {
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- command_print(CMD,
- "LinuxGPIOD nums: tck = %d, tms = %d, tdi = %d, tdo = %d",
- tck_gpio, tms_gpio, tdi_gpio, tdo_gpio);
-
- return ERROR_OK;
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tck)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "tck", &tck_gpiochip,
- &tck_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tms)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "tms", &tms_gpiochip,
- &tms_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tdo)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "tdo", &tdo_gpiochip,
- &tdo_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_tdi)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "tdi", &tdi_gpiochip,
- &tdi_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_srst)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "srst", &srst_gpiochip,
- &srst_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_jtag_gpionum_trst)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "trst", &trst_gpiochip,
- &trst_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_swd_gpionums)
-{
- if (CMD_ARGC == 2) {
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], swclk_gpio);
- COMMAND_PARSE_NUMBER(int, CMD_ARGV[1], swdio_gpio);
- } else if (CMD_ARGC != 0) {
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- command_print(CMD,
- "LinuxGPIOD nums: swclk = %d, swdio = %d",
- swclk_gpio, swdio_gpio);
-
- return ERROR_OK;
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_swd_gpionum_swclk)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "swclk", &swclk_gpiochip,
- &swclk_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_swd_gpionum_swdio)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "swdio", &swdio_gpiochip,
- &swdio_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_swd_gpionum_swdio_dir)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "swdio_dir", &swdio_dir_gpiochip,
- &swdio_dir_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_gpionum_led)
-{
- return CALL_COMMAND_HANDLER(linuxgpiod_helper_gpionum, "led", &led_gpiochip,
- &led_gpio);
-}
-
-COMMAND_HANDLER(linuxgpiod_handle_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;
- swdio_dir_gpiochip = gpiochip;
- led_gpiochip = gpiochip;
- }
-
- command_print(CMD, "LinuxGPIOD gpiochip = %d", gpiochip);
- return ERROR_OK;
-}
-
-static const struct command_registration linuxgpiod_subcommand_handlers[] = {
- {
- .name = "jtag_nums",
- .handler = linuxgpiod_handle_jtag_gpionums,
- .mode = COMMAND_CONFIG,
- .help = "gpio numbers for tck, tms, tdi, tdo. (in that order)",
- .usage = "tck tms tdi tdo",
- },
- {
- .name = "tck_num",
- .handler = linuxgpiod_handle_jtag_gpionum_tck,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for tck.",
- .usage = "[chip] tck",
- },
- {
- .name = "tms_num",
- .handler = linuxgpiod_handle_jtag_gpionum_tms,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for tms.",
- .usage = "[chip] tms",
- },
- {
- .name = "tdo_num",
- .handler = linuxgpiod_handle_jtag_gpionum_tdo,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for tdo.",
- .usage = "[chip] tdo",
- },
- {
- .name = "tdi_num",
- .handler = linuxgpiod_handle_jtag_gpionum_tdi,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for tdi.",
- .usage = "[chip] tdi",
- },
- {
- .name = "srst_num",
- .handler = linuxgpiod_handle_jtag_gpionum_srst,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for srst.",
- .usage = "[chip] srst",
- },
- {
- .name = "trst_num",
- .handler = linuxgpiod_handle_jtag_gpionum_trst,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for trst.",
- .usage = "[chip] trst",
- },
- {
- .name = "swd_nums",
- .handler = linuxgpiod_handle_swd_gpionums,
- .mode = COMMAND_CONFIG,
- .help = "gpio numbers for swclk, swdio. (in that order)",
- .usage = "swclk swdio",
- },
- {
- .name = "swclk_num",
- .handler = linuxgpiod_handle_swd_gpionum_swclk,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for swclk.",
- .usage = "[chip] swclk",
- },
- {
- .name = "swdio_num",
- .handler = linuxgpiod_handle_swd_gpionum_swdio,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for swdio.",
- .usage = "[chip] swdio",
- },
- {
- .name = "swdio_dir_num",
- .handler = linuxgpiod_handle_swd_gpionum_swdio_dir,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for swdio_dir.",
- .usage = "[chip] swdio_dir",
- },
- {
- .name = "led_num",
- .handler = linuxgpiod_handle_gpionum_led,
- .mode = COMMAND_CONFIG,
- .help = "gpio chip number (optional) and gpio number for LED.",
- .usage = "[chip] led",
- },
- {
- .name = "gpiochip",
- .handler = linuxgpiod_handle_gpiochip,
- .mode = COMMAND_CONFIG,
- .help = "number of the gpiochip.",
- .usage = "gpiochip",
- },
- COMMAND_REGISTRATION_DONE
-};
-
-static const struct command_registration linuxgpiod_command_handlers[] = {
- {
- .name = "linuxgpiod",
- .mode = COMMAND_ANY,
- .help = "perform linuxgpiod management",
- .chain = linuxgpiod_subcommand_handlers,
- .usage = "",
- },
- COMMAND_REGISTRATION_DONE
-};
-