X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fsim3x.c;h=f282ba0897033c28b50e884c0fa4327be403bf13;hb=42f1cc576ab9b503fadd0b8916a139cd0bc6563e;hp=867d0caf9c9b1f747fd447a1869f950fbfd3e5bd;hpb=cc50a428829d6feaf9b6eb2a796c4a834bd6368e;p=openocd.git diff --git a/src/flash/nor/sim3x.c b/src/flash/nor/sim3x.c index 867d0caf9c..f282ba0897 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 * @@ -14,6 +14,9 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -512,8 +515,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); @@ -748,7 +751,7 @@ static int sim3x_read_info(struct flash_bank *bank) } if (((cpuid >> 4) & 0xfff) != 0xc23) { - LOG_ERROR("Target is not CortexM3"); + LOG_ERROR("Target is not Cortex-M3"); return ERROR_FAIL; } @@ -864,14 +867,12 @@ 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; } } @@ -895,7 +896,7 @@ 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); - retval = dap_queue_ap_write(dap, reg, value); + retval = dap_queue_ap_write(dap_ap(dap, SIM3X_AP), reg, value); if (retval != ERROR_OK) { LOG_DEBUG("DAP: failed to queue a write request"); return retval; @@ -913,7 +914,8 @@ 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; - retval = dap_queue_ap_read(dap, reg, result); + + retval = dap_queue_ap_read(dap_ap(dap, SIM3X_AP), reg, result); if (retval != ERROR_OK) { LOG_DEBUG("DAP: failed to queue a read request"); return retval; @@ -961,9 +963,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; @@ -990,8 +989,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; } @@ -1015,13 +1012,10 @@ COMMAND_HANDLER(sim3x_lock) return ret; if ((val & CPUID_CHECK_VALUE_MASK) != CPUID_CHECK_VALUE) { - LOG_ERROR("Target is not ARM CortexM3 or is already locked"); + LOG_ERROR("Target is not ARM Cortex-M3 or is already locked"); 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) @@ -1041,8 +1035,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; @@ -1051,8 +1043,6 @@ COMMAND_HANDLER(sim3x_lock) return ERROR_FAIL; } } - - dap_ap_select(dap, origninal_ap); } ret = target_read_u32(target, LOCK_WORD_ADDRESS, &val); @@ -1132,5 +1122,6 @@ struct flash_driver sim3x_flash = { .auto_probe = sim3x_auto_probe, .erase_check = default_flash_blank_check, .protect_check = sim3x_flash_protect_check, - .info = sim3x_flash_info + .info = sim3x_flash_info, + .free_driver_priv = default_flash_free_driver_priv, };