X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fflash%2Fnor%2Fsim3x.c;h=7ccf56b6e150ad5c81a6534fb9baa9b935588110;hb=80ca927ebc2bb1ca18aff70215222d55c1f196f8;hp=0a5906c12b8641ce03d7cd5e776cd2d9c8516fb3;hpb=bfba15a898ae8eb2086f8981fcabf1298ec5c761;p=openocd.git diff --git a/src/flash/nor/sim3x.c b/src/flash/nor/sim3x.c index 0a5906c12b..7ccf56b6e1 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 @@ -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; } @@ -893,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; @@ -911,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; @@ -959,9 +963,6 @@ COMMAND_HANDLER(sim3x_mass_erase) return ERROR_FAIL; } - const uint8_t origninal_ap = dap_ap_get_select(dap); - dap_ap_select(dap, SIM3X_AP); - ret = ap_read_register(dap, SIM3X_AP_ID, &val); if (ret != ERROR_OK) return ret; @@ -988,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; } @@ -1013,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_get_select(dap); - dap_ap_select(dap, SIM3X_AP); - /* check SIM3X_AP_ID */ ret = ap_read_register(dap, SIM3X_AP_ID, &val); if (ret != ERROR_OK) @@ -1039,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; @@ -1049,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); @@ -1118,7 +1110,7 @@ static const struct command_registration sim3x_command_handlers[] = { COMMAND_REGISTRATION_DONE }; -struct flash_driver sim3x_flash = { +const struct flash_driver sim3x_flash = { .name = "sim3x", .commands = sim3x_command_handlers, .flash_bank_command = sim3x_flash_bank_command, @@ -1130,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, };