David Brownell <david-b@pacbell.net>:
[openocd.git] / src / jtag / ft2232.c
index ae3bd863c30ee83593e820a73d279997c213123e..a458315ba7550a402cac062340ad5b42c0ea7230 100644 (file)
@@ -1193,6 +1193,7 @@ static int ft2232_predict_scan_in(int scan_size, enum scan_type type)
 
 static void usbjtag_reset(int trst, int srst)
 {
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (trst == 1)
        {
                if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
@@ -1232,6 +1233,7 @@ static void usbjtag_reset(int trst, int srst)
 
 static void jtagkey_reset(int trst, int srst)
 {
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (trst == 1)
        {
                if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
@@ -1273,6 +1275,7 @@ static void jtagkey_reset(int trst, int srst)
 
 static void olimex_jtag_reset(int trst, int srst)
 {
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (trst == 1)
        {
                if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
@@ -2099,7 +2102,7 @@ static int ft2232_init(void)
        if (layout->init() != ERROR_OK)
                return ERROR_JTAG_INIT_FAILED;
 
-       ft2232_speed(jtag_speed);
+       ft2232_speed(jtag_get_speed());
 
        buf[0] = 0x85; /* Disconnect TDI/DO to TDO/DI for Loopback */
        if (((retval = ft2232_write(buf, 1, &bytes_written)) != ERROR_OK) || (bytes_written != 1))
@@ -2155,6 +2158,7 @@ static int usbjtag_init(void)
                return ERROR_JTAG_INIT_FAILED;
        }
 
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
        {
                low_direction &= ~nTRSTnOE; /* nTRST input */
@@ -2229,6 +2233,7 @@ static int axm0432_jtag_init(void)
        high_output    = 0x0;
        high_direction = 0x0c;
 
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
        {
                LOG_ERROR("can't set nTRSTOE to push-pull on the Dicarlo jtag");
@@ -2307,6 +2312,7 @@ static int jtagkey_init(void)
        high_output    = 0x0;
        high_direction = 0x0f;
 
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
        {
                high_output |= nTRSTnOE;
@@ -2373,6 +2379,7 @@ static int olimex_jtag_init(void)
        high_output    = 0x0;
        high_direction = 0x0f;
 
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
        {
                high_output |= nTRSTnOE;
@@ -2820,8 +2827,6 @@ static int ft2232_handle_layout_command(struct command_context_s* cmd_ctx, char*
 
 static int ft2232_handle_vid_pid_command(struct command_context_s* cmd_ctx, char* cmd, char** args, int argc)
 {
-       int i;
-
        if (argc > MAX_USB_IDS * 2)
        {
                LOG_WARNING("ignoring extra IDs in ft2232_vid_pid "
@@ -2832,13 +2837,21 @@ static int ft2232_handle_vid_pid_command(struct command_context_s* cmd_ctx, char
        {
                LOG_WARNING("incomplete ft2232_vid_pid configuration directive");
                if (argc < 2)
-                       return ERROR_OK;
+                       return ERROR_COMMAND_SYNTAX_ERROR;
+               // remove the incomplete trailing id
+               argc -= 1;
        }
 
-       for (i = 0; i + 1 < argc; i += 2)
+       int i;
+       int retval = ERROR_OK;
+       for (i = 0; i < argc; i += 2)
        {
-               ft2232_vid[i >> 1] = strtol(args[i], NULL, 0);
-               ft2232_pid[i >> 1] = strtol(args[i + 1], NULL, 0);
+               retval = parse_u16(args[i], &ft2232_vid[i >> 1]);
+               if (ERROR_OK != retval)
+                       break;
+               retval = parse_u16(args[i + 1], &ft2232_pid[i >> 1]);
+               if (ERROR_OK != retval)
+                       break;
        }
 
        /*
@@ -2847,7 +2860,7 @@ static int ft2232_handle_vid_pid_command(struct command_context_s* cmd_ctx, char
         */
        ft2232_vid[i >> 1] = ft2232_pid[i >> 1] = 0;
 
-       return ERROR_OK;
+       return retval;
 }
 
 
@@ -2944,6 +2957,7 @@ static int icebear_jtag_init(void) {
        nTRST           = 0x10;
        nSRST           = 0x20;
 
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
        if ((jtag_reset_config & RESET_TRST_OPEN_DRAIN) != 0) {
                low_direction   &= ~nTRST;      /* nTRST high impedance */
        }
@@ -2991,6 +3005,7 @@ static void icebear_jtag_reset(int trst, int srst) {
                low_output      &= ~nTRST;
        }
        else if (trst == 0) {
+               enum reset_types jtag_reset_config = jtag_get_reset_config();
                if ((jtag_reset_config & RESET_TRST_OPEN_DRAIN) != 0)
                        low_direction   &= ~nTRST;
                else

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)