summaryrefslogtreecommitdiffstats
path: root/ft2232_spi.c
diff options
context:
space:
mode:
authorTodd Broch <tbroch@chromium.org>2016-02-14 15:46:00 +0000
committerStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>2016-02-14 15:46:00 +0000
commit6800c953ef37820e2b0378ccb27064395d32ddf9 (patch)
tree8675d3d21b010cd74786f61fce00c5e8241573dd /ft2232_spi.c
parente5dcc15beaca17c73795067bfec36be83b48c5b0 (diff)
downloadast2050-flashrom-6800c953ef37820e2b0378ccb27064395d32ddf9.zip
ast2050-flashrom-6800c953ef37820e2b0378ccb27064395d32ddf9.tar.gz
ft2232_spi: Add support for Google Servo boards (v1 + v2)
This patch has been cherry-picked from various patches in the chromiumos tree denoted below. Change-Id: I4b679e23ab37a4357b1e3d23f6f65a1c31f7d71a Change-Id: Ibda56201ab4519315431c08206c61ceffb7c7e65 Change-Id: I540ad2d304dc69a7c79ca154beb744ef947ff808 Servo V2 has two FT4232H parts. The first one (denoted 'legacy') is dedicated to supporting orginal Servo V1 functionality. The second, residing at USB ID 0x18d1:5003 provides two other SPI interfaces on port A and B respectively. Additional changes by Alexandru Gagniuc, Hatim Kanchwala and Urja Rannikko: - The clock divisor is set to '6', as this creates a 10MHz SPI clock, which is the same SPI clock that the chromiumos branch produced. - Add udev rule for Google servo boards to util/flashrom.rules. - Add Google servo entry to manpage. Corresponding to flashrom svn r1925. Signed-off-by: Todd Broch <tbroch@chromium.org> Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Signed-off-by: Hatim Kanchwala <hatim@hatimak.me> Signed-off-by: Urja Rannikko <urjaman@gmail.com> Acked-by: Hatim Kanchwala <hatim@hatimak.me> Acked-by: Urja Rannikko <urjaman@gmail.com> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Diffstat (limited to 'ft2232_spi.c')
-rw-r--r--ft2232_spi.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/ft2232_spi.c b/ft2232_spi.c
index 08742ec..be60837 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -58,6 +58,11 @@
#define OLIMEX_ARM_OCD_H_PID 0x002B
#define OLIMEX_ARM_TINY_H_PID 0x002A
+#define GOOGLE_VID 0x18D1
+#define GOOGLE_SERVO_PID 0x5001
+#define GOOGLE_SERVO_V2_PID0 0x5002
+#define GOOGLE_SERVO_V2_PID1 0x5003
+
const struct dev_entry devs_ft2232spi[] = {
{FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"},
{FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"},
@@ -66,6 +71,9 @@ const struct dev_entry devs_ft2232spi[] = {
{FTDI_VID, TIAO_TUMPA_LITE_PID, OK, "TIAO", "USB Multi-Protocol Adapter Lite"},
{FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"},
{GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"},
+ {GOOGLE_VID, GOOGLE_SERVO_PID, OK, "Google", "Servo"},
+ {GOOGLE_VID, GOOGLE_SERVO_V2_PID0, OK, "Google", "Servo V2 Legacy"},
+ {GOOGLE_VID, GOOGLE_SERVO_V2_PID1, OK, "Google", "Servo V2"},
{FIC_VID, OPENMOKO_DBGBOARD_PID, OK, "FIC", "OpenMoko Neo1973 Debug board (V2+)"},
{OLIMEX_VID, OLIMEX_ARM_OCD_PID, OK, "Olimex", "ARM-USB-OCD"},
{OLIMEX_VID, OLIMEX_ARM_TINY_PID, OK, "Olimex", "ARM-USB-TINY"},
@@ -254,6 +262,17 @@ int ft2232_spi_init(void)
ft2232_vid = OLIMEX_VID;
ft2232_type = OLIMEX_ARM_TINY_H_PID;
channel_count = 2;
+ } else if (!strcasecmp(arg, "google-servo")) {
+ ft2232_vid = GOOGLE_VID;
+ ft2232_type = GOOGLE_SERVO_PID;
+ } else if (!strcasecmp(arg, "google-servo-v2")) {
+ ft2232_vid = GOOGLE_VID;
+ ft2232_type = GOOGLE_SERVO_V2_PID1;
+ /* Default divisor is too fast, and chip ID fails */
+ divisor = 6;
+ } else if (!strcasecmp(arg, "google-servo-v2-legacy")) {
+ ft2232_vid = GOOGLE_VID;
+ ft2232_type = GOOGLE_SERVO_V2_PID0;
} else {
msg_perr("Error: Invalid device type specified.\n");
free(arg);
OpenPOWER on IntegriCloud