summaryrefslogtreecommitdiff
path: root/src/jtag/zy1000
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2010-08-02 22:12:33 +0200
committerØyvind Harboe <oyvind.harboe@zylin.com>2010-08-02 22:22:03 +0200
commitc49d4c9f7f43979e3abf04067dc38535f7ebc45a (patch)
tree04aa9bc6937cc3d7bc02f6aff6abb166421425c7 /src/jtag/zy1000
parent4e27305ed5dac23e8b9a43e43b4b908dc53a0a20 (diff)
downloadopenocd+libswd-c49d4c9f7f43979e3abf04067dc38535f7ebc45a.tar.gz
openocd+libswd-c49d4c9f7f43979e3abf04067dc38535f7ebc45a.tar.bz2
openocd+libswd-c49d4c9f7f43979e3abf04067dc38535f7ebc45a.tar.xz
openocd+libswd-c49d4c9f7f43979e3abf04067dc38535f7ebc45a.zip
zy1000: use correct base clock when calculating speed divisor
revc uses 60MHz and revb 64MHz, use this in calculations. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Diffstat (limited to 'src/jtag/zy1000')
-rw-r--r--src/jtag/zy1000/zy1000.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/jtag/zy1000/zy1000.c b/src/jtag/zy1000/zy1000.c
index 23f2fdd7..3ecd0f9b 100644
--- a/src/jtag/zy1000/zy1000.c
+++ b/src/jtag/zy1000/zy1000.c
@@ -1,4 +1,4 @@
-'n/***************************************************************************
+/***************************************************************************
* Copyright (C) 2007-2010 by Øyvind Harboe *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -62,6 +62,9 @@
#ifdef CYGPKG_HAL_NIOS2
#include <cyg/hal/io.h>
#include <cyg/firmwareutil/firmwareutil.h>
+#define ZYLIN_KHZ 60000
+#else
+#define ZYLIN_KHZ 64000
#endif
#define ZYLIN_VERSION GIT_ZY1000_VERSION
@@ -70,6 +73,9 @@
#define ZYLIN_OPENOCD GIT_OPENOCD_VERSION
#define ZYLIN_OPENOCD_VERSION "ZY1000 " ZYLIN_VERSION " " ZYLIN_DATE
+#else
+/* Assume we're connecting to a revc w/60MHz clock. */
+#define ZYLIN_KHZ 60000
#endif
@@ -102,7 +108,7 @@ static int zy1000_khz(int khz, int *jtag_speed)
* 64000 / 6 = 10666
*
*/
- speed = (64000 + (khz -1)) / khz;
+ speed = (ZYLIN_KHZ + (khz -1)) / khz;
speed = (speed + 1 ) / 2;
speed *= 2;
if (speed > 8190)
@@ -123,7 +129,7 @@ static int zy1000_speed_div(int speed, int *khz)
}
else
{
- *khz = 64000/speed;
+ *khz = ZYLIN_KHZ / speed;
}
return ERROR_OK;
@@ -265,7 +271,8 @@ int zy1000_speed(int speed)
{
if (speed > 8190 || speed < 2)
{
- LOG_USER("valid ZY1000 jtag_speed=[8190,2]. Divisor is 64MHz / even values between 8190-2, i.e. min 7814Hz, max 32MHz");
+ LOG_USER("valid ZY1000 jtag_speed=[8190,2]. With divisor is %dkHz / even values between 8190-2, i.e. min %dHz, max %dMHz",
+ ZYLIN_KHZ, (ZYLIN_KHZ * 1000) / 8190, ZYLIN_KHZ / (2 * 1000));
return ERROR_INVALID_ARGUMENTS;
}