summaryrefslogtreecommitdiff
path: root/src/target/target.c
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-08-25 19:52:02 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-08-25 19:52:02 +0000
commitbd7cbd01e8a2e39c1a77d551cb1f8081f880c953 (patch)
treef76d157bd66781e3a60315676c2769726ffd81b9 /src/target/target.c
parent0c41395fc3cb106c3fe0ffb80bc5fe20e3d8b533 (diff)
downloadopenocd+libswd-bd7cbd01e8a2e39c1a77d551cb1f8081f880c953.tar.gz
openocd+libswd-bd7cbd01e8a2e39c1a77d551cb1f8081f880c953.tar.bz2
openocd+libswd-bd7cbd01e8a2e39c1a77d551cb1f8081f880c953.tar.xz
openocd+libswd-bd7cbd01e8a2e39c1a77d551cb1f8081f880c953.zip
David Brownell <david-b@pacbell.net> Accomodate targets which don't support various target-specific
reset operations. Maybe they can't; or it's a "not yet" thing. Note that the assert/deassert operations can't yet trigger for OMAP3 because resets currently include JTAG reset in all cases, resetting the ICEpick and thus disabling the TAP for Cortex-A8. git-svn-id: svn://svn.berlios.de/openocd/trunk@2620 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/target.c')
-rw-r--r--src/target/target.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/target/target.c b/src/target/target.c
index d2194486..381e774e 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -559,6 +559,11 @@ static int target_soft_reset_halt_imp(struct target_s *target)
LOG_ERROR("Target not examined yet");
return ERROR_FAIL;
}
+ if (!target->type->soft_reset_halt_imp) {
+ LOG_ERROR("Target %s does not support soft_reset_halt",
+ target->cmd_name);
+ return ERROR_FAIL;
+ }
return target->type->soft_reset_halt_imp(target);
}
@@ -4035,6 +4040,13 @@ static int tcl_target_func(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
}
if (!target->tap->enabled)
goto err_tap_disabled;
+ if (!target->type->assert_reset
+ || !target->type->deassert_reset) {
+ Jim_SetResult_sprintf(interp,
+ "No target-specific reset for %s",
+ target->cmd_name);
+ return JIM_ERR;
+ }
/* determine if we should halt or not. */
target->reset_halt = !!a;
/* When this happens - all workareas are invalid. */