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/617

-- gerrit

commit 338c1e3d9aab4cb6c4da7522f1a7fa35c34abf98
Author: Spencer Oliver <[email protected]>
Date:   Fri May 4 12:52:48 2012 +0100

    stlink: add stlink_api cmd
    
    This enables the manual selection of the stlink api version.
    
    Change-Id: I0ec8c5b0a101b6456f426d2fec65971da56db4e7
    Signed-off-by: Spencer Oliver <[email protected]>

diff --git a/doc/openocd.texi b/doc/openocd.texi
index 5733aa2..3134afd 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -2671,6 +2671,26 @@ which are not currently documented here.
 
 @deffn {Interface Driver} {stlink}
 ST Micro ST-LINK adapter.
+
+@deffn {Config Command} {stlink_device_desc} description
+Currently Not Supported.
+@end deffn
+
+@deffn {Config Command} {stlink_serial} serial
+Currently Not Supported.
+@end deffn
+
+@deffn {Config Command} {stlink_layout} (@option{sg}|@option{usb})
+Specifies the stlink layout to use.
+@end deffn
+
+@deffn {Config Command} {stlink_vid_pid} vid pid
+The vendor ID and product ID of the STLINK device.
+@end deffn
+
+@deffn {Config Command} {stlink_api} api_level
+Manually sets the stlink api used, valid options are 1 or 2.
+@end deffn
 @end deffn
 
 @deffn {Interface Driver} {ZY1000}
diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c
index 1de42ef..b4944f5 100644
--- a/src/jtag/drivers/stlink_usb.c
+++ b/src/jtag/drivers/stlink_usb.c
@@ -48,7 +48,7 @@
 #define STLINK_CMD_SIZE_V1     (10)
 
 enum stlink_jtag_api_version {
-       STLINK_JTAG_API_V1 = 0,
+       STLINK_JTAG_API_V1 = 1,
        STLINK_JTAG_API_V2,
 };
 
@@ -1132,6 +1132,7 @@ static int stlink_usb_open(struct 
stlink_interface_param_s *param, void **fd)
 {
        int err;
        struct stlink_usb_handle_s *h;
+       enum stlink_jtag_api_version api;
 
        LOG_DEBUG("stlink_usb_open");
 
@@ -1213,8 +1214,17 @@ static int stlink_usb_open(struct 
stlink_interface_param_s *param, void **fd)
                return err;
        }
 
+       api = h->version.jtag_api_max;
+
+       /* check that user has not requested certain api version
+        * and if they have check it is supported */
+       if ((param->api != 0) && (param->api <= h->version.jtag_api_max)) {
+               api = param->api;
+               LOG_INFO("using stlink api v%d", api);
+       }
+
        /* set the used jtag api, this will default to the newest supported 
version */
-       h->jtag_api = h->version.jtag_api_max;
+       h->jtag_api = api;
 
        /* initialize the debug hardware */
        err = stlink_usb_init_mode(h);
diff --git a/src/jtag/stlink/stlink_interface.c 
b/src/jtag/stlink/stlink_interface.c
index 389ab3f..b3379df 100644
--- a/src/jtag/stlink/stlink_interface.c
+++ b/src/jtag/stlink/stlink_interface.c
@@ -34,7 +34,7 @@
 
 #include <target/target.h>
 
-static struct stlink_interface_s stlink_if = { {0, 0, 0, 0, 0}, 0, 0 };
+static struct stlink_interface_s stlink_if = { {0, 0, 0, 0, 0, 0}, 0, 0 };
 
 int stlink_interface_open(enum stlink_transports tr)
 {
@@ -200,6 +200,21 @@ COMMAND_HANDLER(stlink_interface_handle_vid_pid_command)
        return ERROR_OK;
 }
 
+COMMAND_HANDLER(stlink_interface_handle_api_command)
+{
+       if (CMD_ARGC != 1)
+               return ERROR_COMMAND_SYNTAX_ERROR;
+
+       int new_api;
+       COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], new_api);
+       if ((new_api == 0) || (new_api > 2))
+               return ERROR_COMMAND_SYNTAX_ERROR;
+
+       stlink_if.param.api = new_api;
+
+       return ERROR_OK;
+}
+
 static const struct command_registration stlink_interface_command_handlers[] = 
{
        {
         .name = "stlink_device_desc",
@@ -229,6 +244,13 @@ static const struct command_registration 
stlink_interface_command_handlers[] = {
         .help = "the vendor and product ID of the STLINK device",
         .usage = "(vid pid)* ",
         },
+        {
+        .name = "stlink_api",
+        .handler = &stlink_interface_handle_api_command,
+        .mode = COMMAND_CONFIG,
+        .help = "set the desired stlink api level",
+        .usage = "api version 1 or 2",
+        },
        COMMAND_REGISTRATION_DONE
 };
 
diff --git a/src/jtag/stlink/stlink_interface.h 
b/src/jtag/stlink/stlink_interface.h
index 4b6949e..10148f4 100644
--- a/src/jtag/stlink/stlink_interface.h
+++ b/src/jtag/stlink/stlink_interface.h
@@ -38,6 +38,8 @@ struct stlink_interface_param_s {
        /** */
        uint16_t pid;
        /** */
+       uint16_t api;
+       /** */
        enum stlink_transports transport;
 };
 

-- 

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to