X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fjtag.c;h=f777ebb8cbeb34fb8e7b2d5732c7dc38c1b03521;hb=fe1f475e64aeb737ac43509a339dd6c810b27eea;hp=c28858ee77d91a5b364123c8ba547a7a5c74bca8;hpb=bb36f541dd9f67a69471f29650e194a8a827ff95;p=openocd.git diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index c28858ee77..f777ebb8cb 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -1311,7 +1311,7 @@ int jtag_reset_callback(enum jtag_event event, void *priv) void jtag_sleep(u32 us) { - usleep(us); + alive_sleep(us/1000); } /* Try to examine chain layout according to IEEE 1149.1 §12 @@ -1364,9 +1364,8 @@ int jtag_examine_chain(void) if ((idcode & 1) == 0) { /* LSB must not be 0, this indicates a device in bypass */ - device_count++; - - LOG_WARNING("Device was in bypass after TRST/TMS reset"); + LOG_WARNING("Device does not have IDCODE"); + idcode=0; bit_count += 1; } @@ -1403,13 +1402,6 @@ int jtag_examine_chain(void) break; } - if (device) - { - device->idcode = idcode; - device = device->next; - } - device_count++; - manufacturer = (idcode & 0xffe) >> 1; part = (idcode & 0xffff000) >> 12; version = (idcode & 0xf0000000) >> 28; @@ -1419,6 +1411,12 @@ int jtag_examine_chain(void) bit_count += 32; } + if (device) + { + device->idcode = idcode; + device = device->next; + } + device_count++; } /* see if number of discovered devices matches configuration */ @@ -1556,7 +1554,6 @@ int jtag_interface_init(struct command_context_s *cmd_ctx) static int jtag_init_inner(struct command_context_s *cmd_ctx) { - int validate_tries = 0; jtag_device_t *device; int retval; @@ -1582,16 +1579,9 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx) LOG_ERROR("trying to validate configured JTAG chain anyway..."); } - while (jtag_validate_chain() != ERROR_OK) + if (jtag_validate_chain() != ERROR_OK) { - validate_tries++; - - if (validate_tries > 5) - { - LOG_ERROR("Could not validate JTAG chain"); - return ERROR_JTAG_INVALID_INTERFACE; - } - usleep(10000); + LOG_ERROR("Could not validate JTAG chain, continuing anyway..."); } return ERROR_OK; @@ -1940,7 +1930,6 @@ int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char * if (jtag!=NULL) { - int what_speed; if ((retval=jtag->speed_div(jtag_speed, &speed_khz))!=ERROR_OK) return retval; }