]> git.sur5r.net Git - openocd/blobdiff - src/jtag/presto.c
fix from Pavel Chromy
[openocd] / src / jtag / presto.c
index 084ae91799e91230d4392395579638b26c8a1739..1e21c22bde8073d0e704a8431dbbee4f4a3315b3 100644 (file)
@@ -61,7 +61,6 @@ jtag_interface_t presto_interface =
 {
        .name = "presto",
        .execute_queue = bitq_execute_queue,
-       .support_pathmove = 1,
        .speed = presto_jtag_speed,
        .register_commands = presto_jtag_register_commands,
        .init = presto_jtag_init,
@@ -656,11 +655,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 +718,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;
 }