X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Fxscale.c;h=7c364b3f8eef6bd6e5ae6e18a98fcbf6adb04c7b;hp=6bcd0251f3c48b4a51377e69ecaf0c2f350c2c44;hb=91b6460671671a4052feaed04de74ec73bc7f851;hpb=bbe7110f42e96f9c56f9eea7819bf9b287dbe16f diff --git a/src/target/xscale.c b/src/target/xscale.c index 6bcd0251f3..7c364b3f8e 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -487,41 +487,40 @@ int xscale_read_tx(target_t *target, int consume) for (;;) { - int i; - for (i=0; i<100; i++) + /* if we want to consume the register content (i.e. clear TX_READY), + * we have to go straight from Capture-DR to Shift-DR + * otherwise, we go from Capture-DR to Exit1-DR to Pause-DR + */ + if (consume) + jtag_add_pathmove(3, path); + else { - /* if we want to consume the register content (i.e. clear TX_READY), - * we have to go straight from Capture-DR to Shift-DR - * otherwise, we go from Capture-DR to Exit1-DR to Pause-DR - */ - if (consume) - jtag_add_pathmove(3, path); - else - { - jtag_add_pathmove(sizeof(noconsume_path)/sizeof(*noconsume_path), noconsume_path); - } - - jtag_add_dr_scan(3, fields, TAP_RTI); - - if ((retval = jtag_execute_queue()) != ERROR_OK) - { - LOG_ERROR("JTAG error while reading TX"); - return ERROR_TARGET_TIMEOUT; - } - - gettimeofday(&now, NULL); - if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec))) - { - LOG_ERROR("time out reading TX register"); - return ERROR_TARGET_TIMEOUT; - } - if (!((!(field0_in & 1)) && consume)) - { - goto done; - } + jtag_add_pathmove(sizeof(noconsume_path)/sizeof(*noconsume_path), noconsume_path); + } + + jtag_add_dr_scan(3, fields, TAP_RTI); + + if ((retval = jtag_execute_queue()) != ERROR_OK) + { + LOG_ERROR("JTAG error while reading TX"); + return ERROR_TARGET_TIMEOUT; + } + + gettimeofday(&now, NULL); + if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec))) + { + LOG_ERROR("time out reading TX register"); + return ERROR_TARGET_TIMEOUT; + } + if (!((!(field0_in & 1)) && consume)) + { + goto done; + } + if (debug_level>=3) + { + LOG_DEBUG("waiting 10ms"); + usleep(10*1000); /* avoid flooding the logs */ } - LOG_DEBUG("waiting 10ms"); - usleep(10*1000); /* avoid flooding the logs */ } done: @@ -585,28 +584,27 @@ int xscale_write_rx(target_t *target) LOG_DEBUG("polling RX"); for (;;) { - int i; - for (i=0; i<100; i++) + jtag_add_dr_scan(3, fields, TAP_RTI); + + if ((retval = jtag_execute_queue()) != ERROR_OK) { - jtag_add_dr_scan(3, fields, TAP_RTI); - - if ((retval = jtag_execute_queue()) != ERROR_OK) - { - LOG_ERROR("JTAG error while writing RX"); - return retval; - } - - gettimeofday(&now, NULL); - if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec))) - { - LOG_ERROR("time out writing RX register"); - return ERROR_TARGET_TIMEOUT; - } - if (!(field0_in & 1)) - goto done; + LOG_ERROR("JTAG error while writing RX"); + return retval; + } + + gettimeofday(&now, NULL); + if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec))) + { + LOG_ERROR("time out writing RX register"); + return ERROR_TARGET_TIMEOUT; + } + if (!(field0_in & 1)) + goto done; + if (debug_level>=3) + { + LOG_DEBUG("waiting 10ms"); + usleep(10*1000); /* avoid flooding the logs */ } - LOG_DEBUG("waiting 10ms"); - usleep(10*1000); /* wait 10ms to avoid flooding the logs */ } done: