mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +02:00
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>
This commit is contained in:
parent
ed2da0f2bc
commit
3543bfed84
@ -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
|
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,
|
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
|
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
|
Multi-Protocol Adapter (TUMPA), TUMPA Lite, GOEPEL PicoTAP, Google Servo v1/v2, Tin Can Tools
|
||||||
Flyswatter/Flyswatter 2.
|
Flyswatter/Flyswatter 2 and Kristech KT-LINK.
|
||||||
.sp
|
.sp
|
||||||
An optional parameter specifies the controller
|
An optional parameter specifies the controller
|
||||||
type, channel/interface/port it should support. For that you have to use the
|
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 ", " \
|
.BR 2232H ", " 4232H ", " 232H ", " jtagkey ", " busblaster ", " openmoko ", " \
|
||||||
arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \
|
arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \
|
||||||
", " tumpa ", " tumpalite ", " picotap ", " google-servo ", " google-servo-v2 \
|
", " tumpa ", " tumpalite ", " picotap ", " google-servo ", " google-servo-v2 \
|
||||||
" or " google-servo-v2-legacy
|
", " google-servo-v2-legacy " or " kt-link
|
||||||
.B interface
|
.B interface
|
||||||
can be
|
can be
|
||||||
.BR A ", " B ", " C ", or " D .
|
.BR A ", " B ", " C ", or " D .
|
||||||
|
26
ft2232_spi.c
26
ft2232_spi.c
@ -39,6 +39,7 @@
|
|||||||
#define FTDI_FT4233H_PID 0x6041
|
#define FTDI_FT4233H_PID 0x6041
|
||||||
#define TIAO_TUMPA_PID 0x8a98
|
#define TIAO_TUMPA_PID 0x8a98
|
||||||
#define TIAO_TUMPA_LITE_PID 0x8a99
|
#define TIAO_TUMPA_LITE_PID 0x8a99
|
||||||
|
#define KT_LINK_PID 0xbbe2
|
||||||
#define AMONTEC_JTAGKEY_PID 0xCFF8
|
#define AMONTEC_JTAGKEY_PID 0xCFF8
|
||||||
|
|
||||||
#define GOEPEL_VID 0x096C
|
#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, FTDI_FT4233H_PID, OK, "FTDI", "FT4233H"},
|
||||||
{FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"},
|
{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, 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"},
|
{FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"},
|
||||||
{GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"},
|
{GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"},
|
||||||
{GOOGLE_VID, GOOGLE_SERVO_PID, OK, "Google", "Servo"},
|
{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 cs_bits = 0x08;
|
||||||
uint8_t aux_bits = 0x00;
|
uint8_t aux_bits = 0x00;
|
||||||
uint8_t pindir = 0x0b;
|
uint8_t pindir = 0x0b;
|
||||||
|
uint8_t aux_bits_high = 0x00;
|
||||||
|
uint8_t pindir_high = 0x00;
|
||||||
struct ftdi_context ftdic;
|
struct ftdi_context ftdic;
|
||||||
struct ft2232_data *spi_data;
|
struct ft2232_data *spi_data;
|
||||||
|
|
||||||
@ -421,6 +425,17 @@ static int ft2232_spi_init(void)
|
|||||||
/* Flyswatter and Flyswatter-2 require GPIO bits 0x80
|
/* Flyswatter and Flyswatter-2 require GPIO bits 0x80
|
||||||
* and 0x40 to be driven low to enable output buffers */
|
* and 0x40 to be driven low to enable output buffers */
|
||||||
pindir = 0xcb;
|
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 {
|
} else {
|
||||||
msg_perr("Error: Invalid device type specified.\n");
|
msg_perr("Error: Invalid device type specified.\n");
|
||||||
free(arg);
|
free(arg);
|
||||||
@ -659,6 +674,17 @@ format_error:
|
|||||||
goto ftdi_err;
|
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));
|
spi_data = calloc(1, sizeof(*spi_data));
|
||||||
if (!spi_data) {
|
if (!spi_data) {
|
||||||
msg_perr("Unable to allocate space for SPI master data\n");
|
msg_perr("Unable to allocate space for SPI master data\n");
|
||||||
|
@ -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}=="5002", MODE="664", GROUP="plugdev"
|
||||||
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5003", 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
|
# Olimex ARM-USB-OCD
|
||||||
# http://olimex.com/dev/arm-usb-ocd.html
|
# http://olimex.com/dev/arm-usb-ocd.html
|
||||||
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="664", GROUP="plugdev"
|
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="664", GROUP="plugdev"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user