This is an automated email from Gerrit.

Spencer Oliver ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/972

-- gerrit

commit 50385826e7135bb3947bd4adecfd7c5583cf9fc5
Author: Spencer Oliver <[email protected]>
Date:   Fri Nov 9 12:52:37 2012 +0000

    stlink: enable connect under reset
    
    Currently if the target supports srst_nogate we wait until target 
assert_reset
    until we get a chance to assert the srst.
    However sometimes we will not get this far if the target has already failed
    the initial scan.
    
    This has been tested on stm32.
    
    Change-Id: I2c4486942a011534d3e2044788563669bf457b60
    Signed-off-by: Spencer Oliver <[email protected]>

diff --git a/src/jtag/stlink/stlink_interface.c 
b/src/jtag/stlink/stlink_interface.c
index c06d86c..6aa1328 100644
--- a/src/jtag/stlink/stlink_interface.c
+++ b/src/jtag/stlink/stlink_interface.c
@@ -43,7 +43,11 @@ int stlink_interface_open(enum stlink_transports tr)
        /* set transport mode */
        stlink_if.param.transport = tr;
 
-       return stlink_if.layout->open(&stlink_if);
+       int result = stlink_if.layout->open(&stlink_if);
+       if (result != ERROR_OK)
+               return result;
+
+       return stlink_interface_init_reset();
 }
 
 int stlink_interface_init_target(struct target *t)
@@ -127,6 +131,18 @@ static int stlink_interface_execute_queue(void)
        return ERROR_OK;
 }
 
+int stlink_interface_init_reset(void)
+{
+       enum reset_types jtag_reset_config = jtag_get_reset_config();
+
+       if (jtag_reset_config & RESET_SRST_NO_GATING) {
+               jtag_add_reset(0, 1);
+               stlink_if.layout->api->assert_srst(stlink_if.fd, 0);
+       }
+
+       return ERROR_OK;
+}
+
 COMMAND_HANDLER(stlink_interface_handle_device_desc_command)
 {
        LOG_DEBUG("stlink_interface_handle_device_desc_command");
diff --git a/src/jtag/stlink/stlink_interface.h 
b/src/jtag/stlink/stlink_interface.h
index ee2feff..1bb33d5 100644
--- a/src/jtag/stlink/stlink_interface.h
+++ b/src/jtag/stlink/stlink_interface.h
@@ -56,5 +56,6 @@ struct stlink_interface_s {
 int stlink_interface_open(enum stlink_transports tr);
 /** */
 int stlink_interface_init_target(struct target *t);
+int stlink_interface_init_reset(void);
 
 #endif
diff --git a/src/jtag/stlink/stlink_transport.c 
b/src/jtag/stlink/stlink_transport.c
index dc3c681..d83496a 100644
--- a/src/jtag/stlink/stlink_transport.c
+++ b/src/jtag/stlink/stlink_transport.c
@@ -39,6 +39,11 @@ COMMAND_HANDLER(stlink_transport_jtag_command)
        return ERROR_OK;
 }
 
+COMMAND_HANDLER(stlink_transport_reset_command)
+{
+       return stlink_interface_init_reset();
+}
+
 static const struct command_registration
 stlink_transport_stlink_subcommand_handlers[] = {
        {
@@ -71,7 +76,7 @@ stlink_transport_jtag_subcommand_handlers[] = {
        {
         .name = "arp_init-reset",
         .mode = COMMAND_ANY,
-        .handler = stlink_transport_jtag_command,
+        .handler = stlink_transport_reset_command,
         .usage = ""
         },
        {

-- 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_nov
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to