X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fdrivers%2Fjlink.c;h=441e3efad94b3e6198beb659337392f4181ba97b;hp=cda51bc0ce8bd0d50305e9fe454a160cfb049282;hb=8515da60a80880db1f4c632a1ecfef383f6136d8;hpb=d0e763ac7ef6aa17b17bd00ccdfbccfb4eacda69 diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index cda51bc0ce..441e3efad9 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -217,7 +217,7 @@ static void jlink_execute_scan(struct jtag_command *cmd) field->num_bits - 1, 1); tap_set_state(tap_state_transition(tap_get_state(), 1)); - jlink_clock_data(&last_bit, + jlink_clock_data(NULL, 0, &tms_bits, 1, @@ -502,6 +502,35 @@ static bool adjust_swd_buffer_size(void) return true; } +static int jaylink_log_handler(const struct jaylink_context *ctx, int level, + const char *format, va_list args, void *user_data) +{ + enum log_levels tmp; + + switch (level) { + case JAYLINK_LOG_LEVEL_ERROR: + tmp = LOG_LVL_ERROR; + break; + case JAYLINK_LOG_LEVEL_WARNING: + tmp = LOG_LVL_WARNING; + break; + /* + * Forward info messages to the debug output because they are more verbose + * than info messages of OpenOCD. + */ + case JAYLINK_LOG_LEVEL_INFO: + case JAYLINK_LOG_LEVEL_DEBUG: + tmp = LOG_LVL_DEBUG; + break; + default: + tmp = LOG_LVL_WARNING; + } + + log_vprintf_lf(tmp, __FILE__, __LINE__, __func__, format, args); + + return 0; +} + static int jlink_init(void) { int ret; @@ -523,6 +552,15 @@ static int jlink_init(void) return ERROR_JTAG_INIT_FAILED; } + ret = jaylink_log_set_callback(jayctx, &jaylink_log_handler, NULL); + + if (ret != JAYLINK_OK) { + LOG_ERROR("jaylink_log_set_callback() failed: %s.", + jaylink_strerror_name(ret)); + jaylink_exit(jayctx); + return ERROR_JTAG_INIT_FAILED; + } + ret = jaylink_get_device_list(jayctx, &devs); if (ret < 0) { @@ -1708,7 +1746,8 @@ static void jlink_tap_init(void) { tap_length = 0; pending_scan_results_length = 0; - memset(tms_buffer, 0, sizeof(tdi_buffer)); + memset(tms_buffer, 0, sizeof(tms_buffer)); + memset(tdi_buffer, 0, sizeof(tdi_buffer)); } static void jlink_clock_data(const uint8_t *out, unsigned out_offset,