stlinkv3_spi: add support for more product variants
ST released further STLINK-V3 variants with different PIDs:
- STLINK-V3E
- STLINK-V3S
- STLINK-V3 With dual VCP
- STLINK-V3 Without MSD
Tested with STLINK-V3S and STLINK-V3 With dual VCP
Credits goes to the stlink project for collecting the the PID list:
https://github.com/stlink-org/stlink/blob/develop/src/stlink-lib/
usb.h#L22
Change-Id: Ic9ad03316b7005aa35e6f2f710c86f48befd38f2
Signed-off-by: Miklós Márton <martonmiklosqdev@gmail.com>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/65302
Original-Reviewed-by: Thomas Heijligen <src@posteo.de>
Original-Reviewed-by: Felix Singer <felixsinger@posteo.net>
Original-Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/71470
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/stlinkv3_spi.c b/stlinkv3_spi.c
index da70868..2d3ce22 100644
--- a/stlinkv3_spi.c
+++ b/stlinkv3_spi.c
@@ -115,7 +115,10 @@
#define USB_TIMEOUT_IN_MS 5000
static const struct dev_entry devs_stlinkv3_spi[] = {
- {0x0483, 0x374F, OK, "STMicroelectronics", "STLINK-V3"},
+ {0x0483, 0x374E, NT, "STMicroelectronics", "STLINK-V3E"},
+ {0x0483, 0x374F, OK, "STMicroelectronics", "STLINK-V3S"},
+ {0x0483, 0x3753, OK, "STMicroelectronics", "STLINK-V3 dual VCP"},
+ {0x0483, 0x3754, NT, "STMicroelectronics", "STLINK-V3 no MSD"},
{0}
};
@@ -451,6 +454,7 @@
char *serialno = NULL;
char *endptr = NULL;
int ret = 1;
+ int devIndex = 0;
libusb_init(&usb_ctx);
if (!usb_ctx) {
@@ -461,10 +465,17 @@
serialno = extract_programmer_param("serial");
if (serialno)
msg_pdbg("Opening STLINK-V3 with serial: %s\n", serialno);
- stlinkv3_handle = usb_dev_get_by_vid_pid_serial(usb_ctx,
- devs_stlinkv3_spi[0].vendor_id,
- devs_stlinkv3_spi[0].device_id,
- serialno);
+
+
+ while (devs_stlinkv3_spi[devIndex].vendor_id != 0) {
+ stlinkv3_handle = usb_dev_get_by_vid_pid_serial(usb_ctx,
+ devs_stlinkv3_spi[devIndex].vendor_id,
+ devs_stlinkv3_spi[devIndex].device_id,
+ serialno);
+ if (stlinkv3_handle)
+ break;
+ devIndex++;
+ }
if (!stlinkv3_handle) {
if (serialno)