X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fsim3x.c;h=e30ca4543c27368b7e7b8e06a807e7c1d6205eeb;hp=4628e68ed23822c439eb77f47410c4b6d3c73fac;hb=e7d165f3dbff0fbe11f458becdccbb3d4fa8ccc4;hpb=bdbe78f13114d9aed125af682c9efb454cb1c115 diff --git a/src/flash/nor/sim3x.c b/src/flash/nor/sim3x.c index 4628e68ed2..e30ca4543c 100644 --- a/src/flash/nor/sim3x.c +++ b/src/flash/nor/sim3x.c @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2014 by Ladislav Bábel * + * Copyright (C) 2014 by Ladislav Bábel * * ladababel@seznam.cz * * * * Copyright (C) 2015 by Andreas Bomholtz * @@ -512,8 +512,8 @@ static int sim3x_flash_write(struct flash_bank *bank, const uint8_t * buffer, ui "for padding buffer"); return ERROR_FAIL; } - LOG_INFO("odd number of bytes to write (%d), extending to %d " - "and padding with 0xff", old_count, count); + LOG_INFO("odd number of bytes to write (%" PRIu32 "), extending to %" PRIu32 + " and padding with 0xff", old_count, count); new_buffer[count - 1] = 0xff; buffer = memcpy(new_buffer, buffer, old_count); @@ -864,20 +864,17 @@ static int sim3x_flash_info(struct flash_bank *bank, char *buf, int buf_size) return ERROR_BUF_TOO_SMALL; /* Package */ - if (sim3x_info->device_package) { - printed = snprintf(buf, buf_size, "-G%s", sim3x_info->device_package); - buf += printed; - buf_size -= printed; + printed = snprintf(buf, buf_size, "-G%s", sim3x_info->device_package); + buf += printed; + buf_size -= printed; - if (buf_size <= 0) - return ERROR_BUF_TOO_SMALL; - } + if (buf_size <= 0) + return ERROR_BUF_TOO_SMALL; } } /* Print flash size */ printed = snprintf(buf, buf_size, " flash_size = %dKB", sim3x_info->flash_size_kb); - buf += printed; buf_size -= printed; if (buf_size <= 0) @@ -896,6 +893,8 @@ static int ap_write_register(struct adiv5_dap *dap, unsigned reg, uint32_t value int retval; LOG_DEBUG("DAP_REG[0x%02x] <- %08" PRIX32, reg, value); + dap_ap_select(dap, SIM3X_AP); + retval = dap_queue_ap_write(dap, reg, value); if (retval != ERROR_OK) { LOG_DEBUG("DAP: failed to queue a write request"); @@ -914,6 +913,9 @@ static int ap_write_register(struct adiv5_dap *dap, unsigned reg, uint32_t value static int ap_read_register(struct adiv5_dap *dap, unsigned reg, uint32_t *result) { int retval; + + dap_ap_select(dap, SIM3X_AP); + retval = dap_queue_ap_read(dap, reg, result); if (retval != ERROR_OK) { LOG_DEBUG("DAP: failed to queue a read request"); @@ -962,9 +964,6 @@ COMMAND_HANDLER(sim3x_mass_erase) return ERROR_FAIL; } - const uint8_t origninal_ap = dap->ap_current >> 24; - dap_ap_select(dap, SIM3X_AP); - ret = ap_read_register(dap, SIM3X_AP_ID, &val); if (ret != ERROR_OK) return ret; @@ -991,8 +990,6 @@ COMMAND_HANDLER(sim3x_mass_erase) if (ret != ERROR_OK) return ret; - dap_ap_select(dap, origninal_ap); - LOG_INFO("Mass erase success"); return ERROR_OK; } @@ -1020,9 +1017,6 @@ COMMAND_HANDLER(sim3x_lock) return ERROR_FAIL; } } else { - const uint8_t origninal_ap = dap->ap_current >> 24; - dap_ap_select(dap, SIM3X_AP); - /* check SIM3X_AP_ID */ ret = ap_read_register(dap, SIM3X_AP_ID, &val); if (ret != ERROR_OK) @@ -1042,8 +1036,6 @@ COMMAND_HANDLER(sim3x_lock) if (ret != ERROR_OK) return ret; - dap_ap_select(dap, origninal_ap); - if (val & SIM3X_AP_INIT_STAT_LOCK) { LOG_INFO("Target is already locked"); return ERROR_OK; @@ -1052,8 +1044,6 @@ COMMAND_HANDLER(sim3x_lock) return ERROR_FAIL; } } - - dap_ap_select(dap, origninal_ap); } ret = target_read_u32(target, LOCK_WORD_ADDRESS, &val);