From 7189a5ff8cb8cfc33ef2c0be3268204064a2771b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samir=20Ibrad=C5=BEi=C4=87?= Date: Thu, 20 Oct 2011 23:14:10 +0000 Subject: Add support for the GOEPEL PicoTAP programmer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://www.goepel.com/en/jtagboundary-scan/hardware/picotap.html This device is actually a JTAG adapter, but since it uses standard FT2232 A interface pins, it can be easily used as SPI programmer (tested it here successfully). PicoTAP supports only 5V output, so one needs to reduce this to 3.3V in a same manner as DLP Design DLP-USB1232H, see http://flashrom.org/FT2232SPI_Programmer#DLP_Design_DLP-USB1232H for details. The PicoTAP pin-out is as follows: PicoTAP | SPI ---------+------- TCK | SCLK TMS | CS# TDI | SO TDO | SI /TRST | - GND | GND +5V | VCC, HOLD# & WP# after 3.3V regulator I managed to run PicoTAP in 10MHz, 15MHz and 30MHz modes (by forcing DIVIDE_BY), against SST25VF016B SPI flash, read/write/erase all worked fine (write seems somewhat slow). Corresponding to flashrom svn r1453. Signed-off-by: Samir Ibradžić Acked-by: Uwe Hermann --- ft2232_spi.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ft2232_spi.c') diff --git a/ft2232_spi.c b/ft2232_spi.c index 7a52718..8d89ea1 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -37,6 +37,9 @@ #define TIAO_TUMPA_PID 0x8a98 #define AMONTEC_JTAGKEY_PID 0xCFF8 +#define GOEPEL_VID 0x096C +#define GOEPEL_PICOTAP_PID 0x1449 + #define FIC_VID 0x1457 #define OPENMOKO_DBGBOARD_PID 0x5118 @@ -51,6 +54,7 @@ const struct usbdev_status devs_ft2232spi[] = { {FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"}, {FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"}, {FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"}, + {GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"}, {FIC_VID, OPENMOKO_DBGBOARD_PID, OK, "FIC", "OpenMoko Neo1973 Debug board (V2+)"}, {OLIMEX_VID, OLIMEX_ARM_OCD_PID, NT, "Olimex", "ARM-USB-OCD"}, @@ -176,6 +180,10 @@ int ft2232_spi_init(void) ft2232_interface = INTERFACE_A; cs_bits = 0x18; pindir = 0x1b; + } else if (!strcasecmp(arg, "picotap")) { + ft2232_vid = GOEPEL_VID; + ft2232_type = GOEPEL_PICOTAP_PID; + ft2232_interface = INTERFACE_A; } else if (!strcasecmp(arg, "tumpa")) { /* Interface A is SPI1, B is SPI2. */ ft2232_type = TIAO_TUMPA_PID; -- cgit v1.1