X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fkinetis.c;h=a392a17ba30df713abedd9d5cca5a03d9e510066;hp=dce098ecfea726117cedcca7f382e20a25748c0a;hb=08da1b4258a971a068401849c65b9d40f08ee44c;hpb=1fa4c728aa9d93036b2e961f065405feeb238e10 diff --git a/src/flash/nor/kinetis.c b/src/flash/nor/kinetis.c index dce098ecfe..a392a17ba3 100644 --- a/src/flash/nor/kinetis.c +++ b/src/flash/nor/kinetis.c @@ -31,6 +31,7 @@ #include "config.h" #endif +#include "jtag/interface.h" #include "imp.h" #include #include @@ -313,6 +314,14 @@ COMMAND_HANDLER(kinetis_mdm_mass_erase) * Reset Request bit in the MDM-AP control register after * establishing communication... */ + + /* assert SRST */ + if (jtag_get_reset_config() & RESET_HAS_SRST) + adapter_assert_reset(); + else + LOG_WARNING("Attempting mass erase without hardware reset. This is not reliable; " + "it's recommended you connect SRST and use ``reset_config srst_only''."); + dap_ap_select(dap, 1); retval = kinetis_mdm_write_register(dap, MDM_REG_CTRL, MEM_CTRL_SYS_RES_REQ); @@ -364,6 +373,9 @@ COMMAND_HANDLER(kinetis_mdm_mass_erase) if (retval != ERROR_OK) return retval; + if (jtag_get_reset_config() & RESET_HAS_SRST) + adapter_deassert_reset(); + dap_ap_select(dap, original_ap); return ERROR_OK; }