stlink: fix printed version for new STM8 nucleo board 16/4716/3
authorAntonio Borneo <borneo.antonio@gmail.com>
Mon, 1 Oct 2018 08:25:35 +0000 (10:25 +0200)
committerSpencer Oliver <spen@spen-soft.co.uk>
Thu, 6 Dec 2018 13:06:34 +0000 (13:06 +0000)
The ST-LINK/V2.1 embedded in the new nucleo boards for STM8 does
not follow the normal versioning rules, and puts mass-storage and
swim version in the field normally used respectively for jtag and
mass-storage version.

Apply the check suggested by STMicroelectronics to discriminate
the two cases and print the correct version.

Change-Id: I0dd1da11013be3f1e56084489e28cfba98bb07af
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4716
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Tested-by: Spencer Oliver <spen@spen-soft.co.uk>
src/jtag/drivers/stlink_usb.c

index 5837393..ffe4d68 100644 (file)
@@ -665,10 +665,17 @@ static int stlink_usb_version(void *handle)
        switch (h->pid) {
        case STLINK_V2_1_PID:
        case STLINK_V2_1_NO_MSD_PID:
-               /* JxMy : STM32 V2.1 - JTAG/SWD only */
-               jtag = x;
-               msd = y;
-               swim = 0;
+               if ((x <= 22 && y == 7) || (x >= 25 && y >= 7 && y <= 12)) {
+                       /* MxSy : STM8 V2.1 - SWIM only */
+                       msd = x;
+                       swim = y;
+                       jtag = 0;
+               } else {
+                       /* JxMy : STM32 V2.1 - JTAG/SWD only */
+                       jtag = x;
+                       msd = y;
+                       swim = 0;
+               }
                break;
        default:
                jtag = x;