Browse Source

cortex_a: fix reset for SWD transport

Change b0698501b0 fixed
reset for i.MX6 and TI Sitara SoCs but broke reset for
cortex-a targets that use SWD. This patch is a work-
around that forces asserting SRST when SWD is used.

Change-Id: I7e39f2a469b9b4b2b74ad48ba49f2eeb58528921
Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Reviewed-on: http://openocd.zylin.com/3641
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
tags/v0.10.0-rc1
Matthias Welwarsky 7 years ago
committed by Paul Fertser
parent
commit
cdba6ba0ad
1 changed files with 10 additions and 3 deletions
  1. +10
    -3
      src/target/cortex_a.c

+ 10
- 3
src/target/cortex_a.c View File

@@ -54,6 +54,7 @@
#include "target_type.h"
#include "arm_opcodes.h"
#include "arm_semihosting.h"
#include "jtag/swd.h"
#include <helper/time_support.h>

static int cortex_a_poll(struct target *target);
@@ -1867,9 +1868,15 @@ static int cortex_a_assert_reset(struct target *target)
/* REVISIT handle "pulls" cases, if there's
* hardware that needs them to work.
*/
if (target->reset_halt)
if (jtag_get_reset_config() & RESET_SRST_NO_GATING)
jtag_add_reset(0, 1);

/*
* FIXME: fix reset when transport is SWD. This is a temporary
* work-around for release v0.10 that is not intended to stay!
*/
if (transport_is_swd() ||
(target->reset_halt && (jtag_get_reset_config() & RESET_SRST_NO_GATING)))
jtag_add_reset(0, 1);

} else {
LOG_ERROR("%s: how to reset?", target_name(target));
return ERROR_FAIL;


Loading…
Cancel
Save