- /*
- * Take a look in the FT2232 manual,
- * AN2232C-01 Command Processor for
- * MPSSE and MCU Host Bus. Chapter 3.8
- *
- * We will calc here with a multiplier
- * of 10 for better rounding later.
- */
-
- /* Calc speed, (6000 / khz) - 1 */
- *jtag_speed = (60000 / khz) - 10;
-
- /* Add 0.5 for rounding */
- *jtag_speed += 5;
-
- /* Calc real speed */
- *jtag_speed = *jtag_speed / 10;
-
- /* Check if speed is greater than 0 */
- if (*jtag_speed < 0)
- {
- *jtag_speed = 0;
- }
-
+ if (khz==0)
+ {
+ LOG_ERROR("RCLK not supported");
+ return ERROR_FAIL;
+ }
+ /* Take a look in the FT2232 manual,
+ * AN2232C-01 Command Processor for
+ * MPSSE and MCU Host Bus. Chapter 3.8
+ *
+ * We will calc here with a multiplier
+ * of 10 for better rounding later. */
+
+ /* Calc speed, (6000 / khz) - 1 */
+ /* Use 65000 for better rounding */
+ *jtag_speed = (60000 / khz) - 10;
+
+ /* Add 0.9 for rounding */
+ *jtag_speed += 9;
+
+ /* Calc real speed */
+ *jtag_speed = *jtag_speed / 10;
+
+ /* Check if speed is greater than 0 */
+ if (*jtag_speed < 0)
+ {
+ *jtag_speed = 0;
+ }
+
+ /* Check max value */
+ if (*jtag_speed > 0xFFFF)
+ {
+ *jtag_speed = 0xFFFF;
+ }
+