summaryrefslogtreecommitdiffstats
path: root/stlinkv3_spi.c
diff options
context:
space:
mode:
authorMiklós Márton <martonmiklosqdev@gmail.com>2022-06-21 23:34:35 +0200
committerThomas Heijligen <src@posteo.de>2022-07-18 19:15:07 +0000
commit600d37154d2d5ae4f2635e5ee8a75c22c21fd611 (patch)
treeab025c6b7ce6a29f5a771fb7e22d2c4003eebe21 /stlinkv3_spi.c
parent3543bfed84942eea8d4ba398001656f27e367a87 (diff)
downloadflashrom-600d37154d2d5ae4f2635e5ee8a75c22c21fd611.tar.gz
flashrom-600d37154d2d5ae4f2635e5ee8a75c22c21fd611.tar.bz2
flashrom-600d37154d2d5ae4f2635e5ee8a75c22c21fd611.zip
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> Reviewed-on: https://review.coreboot.org/c/flashrom/+/65302 Reviewed-by: Thomas Heijligen <src@posteo.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <felixsinger@posteo.net> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'stlinkv3_spi.c')
-rw-r--r--stlinkv3_spi.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/stlinkv3_spi.c b/stlinkv3_spi.c
index 62ed5f971..43e47baca 100644
--- a/stlinkv3_spi.c
+++ b/stlinkv3_spi.c
@@ -115,7 +115,10 @@ enum spi_nss_level {
#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}
};
@@ -478,6 +481,7 @@ static int stlinkv3_spi_init(void)
char *serialno = NULL;
char *endptr = NULL;
int ret = 1;
+ int devIndex = 0;
struct libusb_context *usb_ctx;
libusb_device_handle *stlinkv3_handle;
struct stlinkv3_spi_data *stlinkv3_data;
@@ -491,10 +495,17 @@ static int stlinkv3_spi_init(void)
serialno = extract_programmer_param_str("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)