X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fcore.c;h=8c79eb2302c3b643f3750a400270c0a3bbaea6ad;hb=64f1f7b1c179dcce4e008bef6bf9515c47ae4100;hp=cb3e9265cc4e123fc1a27ad9b279da0275ffbf0a;hpb=6819468a78ce9f0835a9063d93bc839f3d55eb84;p=openocd.git
diff --git a/src/jtag/core.c b/src/jtag/core.c
index cb3e9265cc..8c79eb2302 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -23,9 +23,7 @@
* 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, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
+ * along with this program. If not, see . *
***************************************************************************/
#ifdef HAVE_CONFIG_H
@@ -36,6 +34,7 @@
#include "swd.h"
#include "interface.h"
#include
+#include
#ifdef HAVE_STRINGS_H
#include
@@ -649,6 +648,12 @@ void swd_add_reset(int req_srst)
if (adapter_nsrst_delay)
jtag_add_sleep(adapter_nsrst_delay * 1000);
}
+
+ retval = jtag_execute_queue();
+ if (retval != ERROR_OK) {
+ LOG_ERROR("SRST timings error");
+ return;
+ }
}
}
@@ -888,6 +893,8 @@ void jtag_sleep(uint32_t us)
#define JTAG_MAX_AUTO_TAPS 20
+#define EXTRACT_JEP106_BANK(X) (((X) & 0xf00) >> 8)
+#define EXTRACT_JEP106_ID(X) (((X) & 0xfe) >> 1)
#define EXTRACT_MFG(X) (((X) & 0xffe) >> 1)
#define EXTRACT_PART(X) (((X) & 0xffff000) >> 12)
#define EXTRACT_VER(X) (((X) & 0xf0000000) >> 28)
@@ -951,10 +958,11 @@ static void jtag_examine_chain_display(enum log_levels level, const char *msg,
{
log_printf_lf(level, __FILE__, __LINE__, __func__,
"JTAG tap: %s %16.16s: 0x%08x "
- "(mfg: 0x%3.3x, part: 0x%4.4x, ver: 0x%1.1x)",
+ "(mfg: 0x%3.3x (%s), part: 0x%4.4x, ver: 0x%1.1x)",
name, msg,
(unsigned int)idcode,
(unsigned int)EXTRACT_MFG(idcode),
+ jep106_manufacturer(EXTRACT_JEP106_BANK(idcode), EXTRACT_JEP106_ID(idcode)),
(unsigned int)EXTRACT_PART(idcode),
(unsigned int)EXTRACT_VER(idcode));
}
@@ -1709,11 +1717,11 @@ void jtag_set_reset_config(enum reset_types type)
int jtag_get_trst(void)
{
- return jtag_trst;
+ return jtag_trst == 1;
}
int jtag_get_srst(void)
{
- return jtag_srst;
+ return jtag_srst == 1;
}
void jtag_set_nsrst_delay(unsigned delay)
@@ -1801,8 +1809,6 @@ void adapter_assert_reset(void)
jtag_add_reset(0, 1);
} else if (transport_is_swd())
swd_add_reset(1);
- else if (transport_is_cmsis_dap())
- swd_add_reset(1); /* FIXME */
else if (get_current_transport() != NULL)
LOG_ERROR("reset is not supported on %s",
get_current_transport()->name);
@@ -1816,8 +1822,6 @@ void adapter_deassert_reset(void)
jtag_add_reset(0, 0);
else if (transport_is_swd())
swd_add_reset(0);
- else if (transport_is_cmsis_dap())
- swd_add_reset(0); /* FIXME */
else if (get_current_transport() != NULL)
LOG_ERROR("reset is not supported on %s",
get_current_transport()->name);