Patchwork TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) support

login
register
about
Submitter Uwe Hermann
Date 2011-09-20 21:32:46
Message ID <20110920213245.GE3293@greenwood>
Download mbox | patch
Permalink /patch/3417/
State Accepted
Headers show

Comments

Uwe Hermann - 2011-09-20 21:32:46
See patch.


Uwe.
Stefan Tauner - 2011-10-06 22:11:09
On Tue, 20 Sep 2011 23:32:46 +0200
Uwe Hermann <uwe@hermann-uwe.de> wrote:

> TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) support.
> 
> Thanks to TIAO/DIYGADGET for sponsoring a test device!
> 
> This is an FTDI FT2232H based device which provides an easily accessible JTAG,
> SPI, I2C, serial breakout. The SPI part can be used to flash SPI flash chips
> using flashrom.
> 
> http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
> http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User%27s_Manual#SPI_Connector_1
> 
> There are two SPI connectors (pin headers) on the board: SPI1, which is
> connected to the FT2232H's A interface, and SPI2, which is connected to the
> chip's B interface. Both can be used to flash SPI chips:
> 
>  flashrom -p ft2232_spi:type=tumpa,port=A
>  flashrom -p ft2232_spi:type=tumpa,port=B
> 
> The default interface is A, so for SPI1 you can also just write:
> 
>  flashrom -p ft2232_spi:type=tumpa
> 
> I tested all operations on both interfaces, everything works fine.
> 
> Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
> 
> Index: util/z60_flashrom.rules
> ===================================================================
> --- util/z60_flashrom.rules	(Revision 1432)
> +++ util/z60_flashrom.rules	(Arbeitskopie)
> @@ -72,4 +72,8 @@
>  # http://olimex.com/dev/arm-usb-tiny-h.html
>  ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"
>  
> +# TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA)
> +# http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
> +ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="664", GROUP="plugdev"
> +
>  LABEL="flashrom_rules_end"
> Index: flashrom.8
> ===================================================================
> --- flashrom.8	(Revision 1432)
> +++ flashrom.8	(Arbeitskopie)
> @@ -199,7 +199,8 @@
>  based USB SPI programmer), including the DLP Design DLP-USB1232H, \
>  FTDI FT2232H Mini-Module, FTDI FT4232H Mini-Module, openbiosprog-spi, Amontec \
>  JTAGkey/JTAGkey-tiny/JTAGkey-2, Dangerous Prototypes Bus Blaster, \
> -Olimex ARM-USB-TINY/-H, and Olimex ARM-USB-OCD/-H."
> +Olimex ARM-USB-TINY/-H, Olimex ARM-USB-OCD/-H, and TIAO/DIYGADGET USB
> +Multi-Protocol Adapter (TUMPA).
>  .sp
>  .BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog), \
>  including AVR flasher by Urja Rannikko, AVR flasher by eightdot, \
> @@ -441,7 +442,8 @@
>  .B model
>  can be
>  .BR 2232H ", " 4232H ", " jtagkey ", " busblaster ", " openmoko ", " \
> -arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd " or " arm-usb-ocd-h
> +arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \
> +", or " tumpa
>  and
>  .B interface
>  can be
> Index: ft2232_spi.c
> ===================================================================
> --- ft2232_spi.c	(Revision 1432)
> +++ ft2232_spi.c	(Arbeitskopie)
> @@ -33,6 +33,7 @@
>  #define FTDI_FT2232H_PID	0x6010
>  #define FTDI_FT4232H_PID	0x6011
>  #define AMONTEC_JTAGKEY_PID	0xCFF8
> +#define TIAO_TUMPA_PID		0x8a98

shouldnt this be sorted by ID?
hm and shouldnt it be TIAO_UMPA_PID instead? :)

>  
>  #define FIC_VID			0x1457
>  #define OPENMOKO_DBGBOARD_PID	0x5118
> @@ -47,6 +48,7 @@
>  	{FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"},
>  	{FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"},
>  	{FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"},
> +	{FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"},
>  	{FIC_VID, OPENMOKO_DBGBOARD_PID, OK, "FIC",
>  		"OpenMoko Neo1973 Debug board (V2+)"},
>  	{OLIMEX_VID, OLIMEX_ARM_OCD_PID, NT, "Olimex", "ARM-USB-OCD"},
> @@ -172,6 +174,10 @@
>  			ft2232_interface = INTERFACE_A;
>  			cs_bits = 0x18;
>  			pindir = 0x1b;
> +		} else if (!strcasecmp(arg, "tumpa")) {
> +			/* Interface A is conn. SPI1, B is conn. SPI2. */

i think dropping the "conn."s would make it more readable.

> +			ft2232_type = TIAO_TUMPA_PID;
> +			ft2232_interface = INTERFACE_A;
>  		} else if (!strcasecmp(arg, "busblaster")) {
>  			/* In its default configuration it is a jtagkey clone */
>  			ft2232_type = FTDI_FT2232H_PID;

good work, thanks! :)
Acked-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at>
Uwe Hermann - 2011-10-14 20:33:50
On Fri, Oct 07, 2011 at 12:11:09AM +0200, Stefan Tauner wrote:
> Acked-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at>

Thanks, r1451 with your suggestions.


Uwe.

Patch

TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) support.

Thanks to TIAO/DIYGADGET for sponsoring a test device!

This is an FTDI FT2232H based device which provides an easily accessible JTAG,
SPI, I2C, serial breakout. The SPI part can be used to flash SPI flash chips
using flashrom.

http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User%27s_Manual#SPI_Connector_1

There are two SPI connectors (pin headers) on the board: SPI1, which is
connected to the FT2232H's A interface, and SPI2, which is connected to the
chip's B interface. Both can be used to flash SPI chips:

 flashrom -p ft2232_spi:type=tumpa,port=A
 flashrom -p ft2232_spi:type=tumpa,port=B

The default interface is A, so for SPI1 you can also just write:

 flashrom -p ft2232_spi:type=tumpa

I tested all operations on both interfaces, everything works fine.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>

Index: util/z60_flashrom.rules
===================================================================
--- util/z60_flashrom.rules	(Revision 1432)
+++ util/z60_flashrom.rules	(Arbeitskopie)
@@ -72,4 +72,8 @@ 
 # http://olimex.com/dev/arm-usb-tiny-h.html
 ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"
 
+# TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA)
+# http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
+ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="664", GROUP="plugdev"
+
 LABEL="flashrom_rules_end"
Index: flashrom.8
===================================================================
--- flashrom.8	(Revision 1432)
+++ flashrom.8	(Arbeitskopie)
@@ -199,7 +199,8 @@ 
 based USB SPI programmer), including the DLP Design DLP-USB1232H, \
 FTDI FT2232H Mini-Module, FTDI FT4232H Mini-Module, openbiosprog-spi, Amontec \
 JTAGkey/JTAGkey-tiny/JTAGkey-2, Dangerous Prototypes Bus Blaster, \
-Olimex ARM-USB-TINY/-H, and Olimex ARM-USB-OCD/-H."
+Olimex ARM-USB-TINY/-H, Olimex ARM-USB-OCD/-H, and TIAO/DIYGADGET USB
+Multi-Protocol Adapter (TUMPA).
 .sp
 .BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog), \
 including AVR flasher by Urja Rannikko, AVR flasher by eightdot, \
@@ -441,7 +442,8 @@ 
 .B model
 can be
 .BR 2232H ", " 4232H ", " jtagkey ", " busblaster ", " openmoko ", " \
-arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd " or " arm-usb-ocd-h
+arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \
+", or " tumpa
 and
 .B interface
 can be
Index: ft2232_spi.c
===================================================================
--- ft2232_spi.c	(Revision 1432)
+++ ft2232_spi.c	(Arbeitskopie)
@@ -33,6 +33,7 @@ 
 #define FTDI_FT2232H_PID	0x6010
 #define FTDI_FT4232H_PID	0x6011
 #define AMONTEC_JTAGKEY_PID	0xCFF8
+#define TIAO_TUMPA_PID		0x8a98
 
 #define FIC_VID			0x1457
 #define OPENMOKO_DBGBOARD_PID	0x5118
@@ -47,6 +48,7 @@ 
 	{FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"},
 	{FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"},
 	{FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"},
+	{FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"},
 	{FIC_VID, OPENMOKO_DBGBOARD_PID, OK, "FIC",
 		"OpenMoko Neo1973 Debug board (V2+)"},
 	{OLIMEX_VID, OLIMEX_ARM_OCD_PID, NT, "Olimex", "ARM-USB-OCD"},
@@ -172,6 +174,10 @@ 
 			ft2232_interface = INTERFACE_A;
 			cs_bits = 0x18;
 			pindir = 0x1b;
+		} else if (!strcasecmp(arg, "tumpa")) {
+			/* Interface A is conn. SPI1, B is conn. SPI2. */
+			ft2232_type = TIAO_TUMPA_PID;
+			ft2232_interface = INTERFACE_A;
 		} else if (!strcasecmp(arg, "busblaster")) {
 			/* In its default configuration it is a jtagkey clone */
 			ft2232_type = FTDI_FT2232H_PID;