Add support for Olimex programmers to ft2232_spi

- add support for Olimex' ARM-USB-TINY, ARM-USB-TINY-H, ARM-USB-OCD
AND ARM-USB-OCD-H and adjust man page - minor string change ("First
International Computer, Inc." -> "FIC")

Corresponding to flashrom svn r1331.

Signed-off-by: Pete Batard <pbatard@gmail.com>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
diff --git a/flashrom.8 b/flashrom.8
index 677e8db..41a1776 100644
--- a/flashrom.8
+++ b/flashrom.8
@@ -183,7 +183,7 @@
 .BR "* it87spi" " (for flash ROMs behind an ITE IT87xx Super I/O LPC/SPI \
 translation unit)"
 .sp
-.BR "* ft2232_spi" " (for SPI flash ROMs attached to a FT2232H/FT4232H/JTAGkey \
+.BR "* ft2232_spi" " (for SPI flash ROMs attached to an FT2232/FT4232H family \
 based USB SPI programmer)"
 .sp
 .BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog)"
@@ -361,8 +361,9 @@
 .sp
 syntax where
 .B model
-can be any of
-.BR 2232H ", " JTAGkey ", or " 4232H
+can be one of
+.BR 2232H ", " 4232H ", " jtagkey ", " openmoko ", " arm-usb-tiny ", " \
+arm-usb-tiny-h ", " arm-usb-ocd " or " arm-usb-ocd-h
 and
 .B interface
 can be any of
diff --git a/ft2232_spi.c b/ft2232_spi.c
index f37a698..7416e5b 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -38,13 +38,22 @@
 #define FIC_VID			0x1457
 #define OPENMOKO_DBGBOARD_PID	0x5118
 
+#define OLIMEX_VID		0x15BA
+#define OLIMEX_ARM_OCD_PID	0x0003
+#define OLIMEX_ARM_TINY_PID	0x0004
+#define OLIMEX_ARM_OCD_H_PID	0x002B
+#define OLIMEX_ARM_TINY_H_PID	0x002A
+
 const struct usbdev_status devs_ft2232spi[] = {
 	{FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"},
 	{FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"},
 	{FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"},
-	{FIC_VID, OPENMOKO_DBGBOARD_PID, OK,
-		"First International Computer, Inc.",
+	{FIC_VID, OPENMOKO_DBGBOARD_PID, OK, "FIC",
 		"OpenMoko Neo1973 Debug board (V2+)"},
+	{OLIMEX_VID, OLIMEX_ARM_OCD_PID, NT, "Olimex", "ARM-USB-OCD"},
+	{OLIMEX_VID, OLIMEX_ARM_TINY_PID, OK, "Olimex", "ARM-USB-TINY"},
+	{OLIMEX_VID, OLIMEX_ARM_OCD_H_PID, NT, "Olimex", "ARM-USB-OCD-H"},
+	{OLIMEX_VID, OLIMEX_ARM_TINY_H_PID, NT, "Olimex", "ARM-USB-TINY-H"},
 	{},
 };
 
@@ -167,6 +176,22 @@
 			ft2232_vid = FIC_VID;
 			ft2232_type = OPENMOKO_DBGBOARD_PID;
 			ft2232_interface = INTERFACE_A;
+		} else if (!strcasecmp(arg, "arm-usb-ocd")) {
+			ft2232_vid = OLIMEX_VID;
+			ft2232_type = OLIMEX_ARM_OCD_PID;
+			ft2232_interface = INTERFACE_A;
+		} else if (!strcasecmp(arg, "arm-usb-tiny")) {
+			ft2232_vid = OLIMEX_VID;
+			ft2232_type = OLIMEX_ARM_TINY_PID;
+			ft2232_interface = INTERFACE_A;
+		} else if (!strcasecmp(arg, "arm-usb-ocd-h")) {
+			ft2232_vid = OLIMEX_VID;
+			ft2232_type = OLIMEX_ARM_OCD_H_PID;
+			ft2232_interface = INTERFACE_A;
+		} else if (!strcasecmp(arg, "arm-usb-tiny-h")) {
+			ft2232_vid = OLIMEX_VID;
+			ft2232_type = OLIMEX_ARM_TINY_H_PID;
+			ft2232_interface = INTERFACE_A;
 		} else {
 			msg_perr("Error: Invalid device type specified.\n");
 			free(arg);