diff options
author | Jacek Naglak <jnaglak@tlen.pl> | 2022-05-18 02:25:13 +0200 |
---|---|---|
committer | Thomas Heijligen <src@posteo.de> | 2022-07-18 19:08:44 +0000 |
commit | 3543bfed84942eea8d4ba398001656f27e367a87 (patch) | |
tree | 2803795515fed78b903289d9c02e1d1468ea2738 | |
parent | ed2da0f2bca3bb7316c7e81cfa3cfc068a31aa71 (diff) | |
download | flashrom-3543bfed84942eea8d4ba398001656f27e367a87.tar.gz flashrom-3543bfed84942eea8d4ba398001656f27e367a87.tar.bz2 flashrom-3543bfed84942eea8d4ba398001656f27e367a87.zip |
ft2232_spi.c: Add support for kt-link jtag interface
Change tested writing, reading and erasing spi flashes
pinout:
jtag - spi
1 vcc - vcc, wp#, hold#
4 gnd - gnd
5 tdi - si
7 tms - cs#
9 tck - sck
13 tdo - so
Connect pins 9 and 12 in EXT connector for 3.3V power.
Signed-off-by: Jacek Naglak <jnaglak@tlen.pl>
Change-Id: Id58c675bc410ec3ef6d58603d13efc9ca53bb87c
Reviewed-on: https://review.coreboot.org/c/flashrom/+/64440
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Felix Singer <felixsinger@posteo.net>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | flashrom.8.tmpl | 6 | ||||
-rw-r--r-- | ft2232_spi.c | 26 | ||||
-rw-r--r-- | util/flashrom_udev.rules | 4 |
3 files changed, 33 insertions, 3 deletions
diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl index c8a998846..a37b88a03 100644 --- a/flashrom.8.tmpl +++ b/flashrom.8.tmpl @@ -898,8 +898,8 @@ Atmel AT25128, AT25256, Micron (ST) M95128, M95256 and OnSemi (Catalyst) CAT25CS This module supports various programmers based on FTDI FT2232/FT4232H/FT232H chips including the DLP Design DLP-USB1232H, openbiosprog-spi, Amontec JTAGkey/JTAGkey-tiny/JTAGkey-2, Dangerous Prototypes Bus Blaster, Olimex ARM-USB-TINY/-H, Olimex ARM-USB-OCD/-H, OpenMoko Neo1973 Debug board (V2+), TIAO/DIYGADGET USB -Multi-Protocol Adapter (TUMPA), TUMPA Lite, GOEPEL PicoTAP, Google Servo v1/v2 and Tin Can Tools -Flyswatter/Flyswatter 2. +Multi-Protocol Adapter (TUMPA), TUMPA Lite, GOEPEL PicoTAP, Google Servo v1/v2, Tin Can Tools +Flyswatter/Flyswatter 2 and Kristech KT-LINK. .sp An optional parameter specifies the controller type, channel/interface/port it should support. For that you have to use the @@ -912,7 +912,7 @@ can be .BR 2232H ", " 4232H ", " 232H ", " jtagkey ", " busblaster ", " openmoko ", " \ arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \ ", " tumpa ", " tumpalite ", " picotap ", " google-servo ", " google-servo-v2 \ -" or " google-servo-v2-legacy +", " google-servo-v2-legacy " or " kt-link .B interface can be .BR A ", " B ", " C ", or " D . diff --git a/ft2232_spi.c b/ft2232_spi.c index f4070ed9a..bbacc03b5 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -39,6 +39,7 @@ #define FTDI_FT4233H_PID 0x6041 #define TIAO_TUMPA_PID 0x8a98 #define TIAO_TUMPA_LITE_PID 0x8a99 +#define KT_LINK_PID 0xbbe2 #define AMONTEC_JTAGKEY_PID 0xCFF8 #define GOEPEL_VID 0x096C @@ -65,6 +66,7 @@ static const struct dev_entry devs_ft2232spi[] = { {FTDI_VID, FTDI_FT4233H_PID, OK, "FTDI", "FT4233H"}, {FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"}, {FTDI_VID, TIAO_TUMPA_LITE_PID, OK, "TIAO", "USB Multi-Protocol Adapter Lite"}, + {FTDI_VID, KT_LINK_PID, OK, "Kristech", "KT-LINK"}, {FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"}, {GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"}, {GOOGLE_VID, GOOGLE_SERVO_PID, OK, "Google", "Servo"}, @@ -333,6 +335,8 @@ static int ft2232_spi_init(void) uint8_t cs_bits = 0x08; uint8_t aux_bits = 0x00; uint8_t pindir = 0x0b; + uint8_t aux_bits_high = 0x00; + uint8_t pindir_high = 0x00; struct ftdi_context ftdic; struct ft2232_data *spi_data; @@ -421,6 +425,17 @@ static int ft2232_spi_init(void) /* Flyswatter and Flyswatter-2 require GPIO bits 0x80 * and 0x40 to be driven low to enable output buffers */ pindir = 0xcb; + } else if (!strcasecmp(arg, "kt-link")) { + ft2232_type = KT_LINK_PID; + /* port B is used as uart */ + channel_count = 1; + /* Set GPIOL1 output high - route TMS and TDO through multiplexers */ + aux_bits = 0x20; + pindir = 0x2b; + /* Set GPIOH4 output low - enable TMS output buffer */ + /* Set GPIOH5 output low - enable TDI output buffer */ + /* Set GPIOH6 output low - enable TCK output buffer */ + pindir_high = 0x70; } else { msg_perr("Error: Invalid device type specified.\n"); free(arg); @@ -659,6 +674,17 @@ format_error: goto ftdi_err; } + if (pindir_high) { + msg_pdbg("Set data bits HighByte\n"); + buf[0] = SET_BITS_HIGH; + buf[1] = aux_bits_high; + buf[2] = pindir_high; + if (send_buf(&ftdic, buf, 3)) { + ret = -8; + goto ftdi_err; + } + } + spi_data = calloc(1, sizeof(*spi_data)); if (!spi_data) { msg_perr("Unable to allocate space for SPI master data\n"); diff --git a/util/flashrom_udev.rules b/util/flashrom_udev.rules index 59de68be7..9fd333082 100644 --- a/util/flashrom_udev.rules +++ b/util/flashrom_udev.rules @@ -62,6 +62,10 @@ ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5001", MODE="664", GROUP="plugdev" ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5002", MODE="664", GROUP="plugdev" ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5003", MODE="664", GROUP="plugdev" +# Kristech KT-LINK +# https://kristech.pl/files/KT-LINK-UM-ENG.pdf +ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bbe2", MODE="664", GROUP="plugdev" + # Olimex ARM-USB-OCD # http://olimex.com/dev/arm-usb-ocd.html ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="664", GROUP="plugdev" |