summaryrefslogtreecommitdiff
path: root/src/jtag/presto.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/jtag/presto.c')
-rw-r--r--src/jtag/presto.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/jtag/presto.c b/src/jtag/presto.c
index 084ae917..62a9746b 100644
--- a/src/jtag/presto.c
+++ b/src/jtag/presto.c
@@ -656,11 +656,26 @@ int presto_bitq_reset(int trst, int srst)
/* -------------------------------------------------------------------------- */
+char *presto_speed_text[4] =
+{
+ "3 MHz",
+ "1.5 MHz",
+ "750 kHz",
+ "93.75 kHz"
+};
int presto_jtag_speed(int speed)
{
+
+ if ((speed < 0) || (speed > 3))
+ {
+ INFO("valid speed values: 0 (3 MHz), 1 (1.5 MHz), 2 (750 kHz) and 3 (93.75 kHz)");
+ return ERROR_INVALID_ARGUMENTS;
+ }
+
jtag_speed = speed;
- return ERROR_OK;
+ INFO("setting speed to %d, max. TCK freq. is %s", speed, presto_speed_text[speed]);
+ return presto_sendbyte(0xA8 | speed);
}
@@ -704,6 +719,9 @@ int presto_jtag_init(void)
}
INFO("PRESTO open, serial number '%s'", presto->serial);
+ /* use JTAG speed setting from configuration file */
+ presto_jtag_speed(jtag_speed);
+
bitq_interface = &presto_bitq;
return ERROR_OK;
}