INCOMPLETE ... I noticed this issue while trying to understand
what changed to make the interactive "reset" stop working right
on some ARM926 boards.  Works OK on server startup, but when it
kicks in later it only sees one of the three TAPs, and complains
about bogus data.

Any objection to finishing and merging this?

--- openocd.orig/src/jtag/core.c        2009-09-16 10:40:54.000000000 -0700
+++ openocd/src/jtag/core.c     2009-09-16 10:39:26.000000000 -0700
@@ -645,6 +645,15 @@ void jtag_add_reset(int req_tlr_or_trst,
        if (jtag_srst != new_srst || jtag_trst != new_trst) {
                int retval;
 
+               /* changing SRST and TRST together leads to unordered
+                * behavior at the adapter level: which happens first?
+                */
+               if (((RESET_SRST_PULLS_TRST |RESET_TRST_PULLS_SRST)
+                                       & jtag_reset_config) == 0
+                               && jtag_srst != new_srst
+                               && jtag_trst != new_trst)
+                       LOG_WARNING("changing SRST and TRST together!");
+
                retval = interface_jtag_add_reset(new_trst, new_srst);
                if (retval != ERROR_OK)
                        jtag_set_error(retval);
@@ -1272,6 +1281,7 @@ int jtag_init_reset(struct command_conte
                jtag_add_reset(1, 1);
                if ((jtag_reset_config & RESET_SRST_PULLS_TRST) == 0)
                        jtag_add_reset(0, 1);
+else jtag_add_reset(1, 0);
        }
        jtag_add_reset(0, 0);
        if ((retval = jtag_execute_queue()) != ERROR_OK)
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to