diff options
author | Jonas Hörberg <jhorberg@sauer-danfoss.com> | 2011-04-28 09:17:57 +0200 |
---|---|---|
committer | Øyvind Harboe <oyvind.harboe@zylin.com> | 2011-05-01 00:38:04 +0200 |
commit | e3f3f60a02abfd836c555e84b997de778177bc83 (patch) | |
tree | cfc1669d4eadf46fe435486beba8ab2d3c81d54e /src/jtag/core.c | |
parent | 5c739b148e019d44b60be061585bf177397ceb41 (diff) |
adapter speed: require init script setting and centralize activation from drivers to core.c
Signed-off-by: Jonas Hörberg <jhorberg@sauer-danfoss.com>
Diffstat (limited to 'src/jtag/core.c')
-rw-r--r-- | src/jtag/core.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c index 4c5d37a7..0a9d72a8 100644 --- a/src/jtag/core.c +++ b/src/jtag/core.c @@ -124,7 +124,7 @@ static struct jtag_event_callback *jtag_event_callbacks; static int speed_khz = 0; /* speed to fallback to when RCLK is requested but not supported */ static int rclk_fallback_speed_khz = 0; -static enum {CLOCK_MODE_SPEED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode; +static enum {CLOCK_MODE_UNSELECTED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode; static int jtag_speed = 0; static struct jtag_interface *jtag = NULL; @@ -1389,12 +1389,22 @@ int adapter_init(struct command_context *cmd_ctx) return retval; } + if (CLOCK_MODE_UNSELECTED == clock_mode) + { + LOG_ERROR("An adapter speed is not selected in the init script." + " Insert a call to adapter_khz or jtag_rclk to proceed."); + return ERROR_JTAG_INIT_FAILED; + } + int requested_khz = jtag_get_speed_khz(); int actual_khz = requested_khz; int jtag_speed_var; retval = jtag_get_speed(&jtag_speed_var); if (retval != ERROR_OK) return retval; + retval = jtag->speed(jtag_speed_var); + if (retval != ERROR_OK) + return retval; retval = jtag_get_speed_readable(&actual_khz); if (ERROR_OK != retval) LOG_INFO("adapter-specific clock speed value %d", jtag_speed_var); @@ -1647,9 +1657,6 @@ int jtag_get_speed(int *speed) { switch(clock_mode) { - case CLOCK_MODE_SPEED: - *speed = jtag_speed; - break; case CLOCK_MODE_KHZ: adapter_khz_to_speed(jtag_get_speed_khz(), speed); break; |