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)