+COMMAND_HANDLER(ft232r_handle_jtag_nums_command)
+{
+ if (CMD_ARGC == 4) {
+ tck_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ tms_gpio = ft232r_bit_name_to_number(CMD_ARGV[1]);
+ tdi_gpio = ft232r_bit_name_to_number(CMD_ARGV[2]);
+ tdo_gpio = ft232r_bit_name_to_number(CMD_ARGV[3]);
+ } else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (tck_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ if (tms_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ if (tdi_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+ if (tdo_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R nums: TCK = %d %s, TMS = %d %s, TDI = %d %s, TDO = %d %s",
+ tck_gpio, ft232r_bit_number_to_name(tck_gpio),
+ tms_gpio, ft232r_bit_number_to_name(tms_gpio),
+ tdi_gpio, ft232r_bit_number_to_name(tdi_gpio),
+ tdo_gpio, ft232r_bit_number_to_name(tdo_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_tck_num_command)
+{
+ if (CMD_ARGC == 1)
+ tck_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (tck_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R num: TCK = %d %s", tck_gpio, ft232r_bit_number_to_name(tck_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_tms_num_command)
+{
+ if (CMD_ARGC == 1)
+ tms_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (tms_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R num: TMS = %d %s", tms_gpio, ft232r_bit_number_to_name(tms_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_tdo_num_command)
+{
+ if (CMD_ARGC == 1)
+ tdo_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (tdo_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R num: TDO = %d %s", tdo_gpio, ft232r_bit_number_to_name(tdo_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_tdi_num_command)
+{
+ if (CMD_ARGC == 1)
+ tdi_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (tdi_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R num: TDI = %d %s", tdi_gpio, ft232r_bit_number_to_name(tdi_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_trst_num_command)
+{
+ if (CMD_ARGC == 1)
+ ntrst_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (ntrst_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R num: TRST = %d %s", ntrst_gpio, ft232r_bit_number_to_name(ntrst_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_srst_num_command)
+{
+ if (CMD_ARGC == 1)
+ nsysrst_gpio = ft232r_bit_name_to_number(CMD_ARGV[0]);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ if (nsysrst_gpio < 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R num: SRST = %d %s", nsysrst_gpio, ft232r_bit_number_to_name(nsysrst_gpio));
+
+ return ERROR_OK;
+}
+
+COMMAND_HANDLER(ft232r_handle_restore_serial_command)
+{
+ if (CMD_ARGC == 1)
+ COMMAND_PARSE_NUMBER(u16, CMD_ARGV[0], ft232r_restore_bitmode);
+ else if (CMD_ARGC != 0)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ command_print(CMD_CTX,
+ "FT232R restore serial: 0x%04X (%s)",
+ ft232r_restore_bitmode, ft232r_restore_bitmode == 0xFFFF ? "disabled" : "enabled");
+
+ return ERROR_OK;
+}
+