ARM7/9 minor cleanups
Shrink some overlong lines. Add my 2009 copyright. Move a declaration to the beginning of its block. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
parent
e2d3266ff1
commit
e1679a29f0
|
@ -11,6 +11,8 @@
|
||||||
* Copyright (C) 2008 by Hongtao Zheng *
|
* Copyright (C) 2008 by Hongtao Zheng *
|
||||||
* hontor@126.com *
|
* hontor@126.com *
|
||||||
* *
|
* *
|
||||||
|
* Copyright (C) 2009 by David Brownell *
|
||||||
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
* it under the terms of the GNU General Public License as published by *
|
* it under the terms of the GNU General Public License as published by *
|
||||||
* the Free Software Foundation; either version 2 of the License, or *
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
|
@ -941,11 +943,11 @@ int arm7_9_poll(struct target *target)
|
||||||
int arm7_9_assert_reset(struct target *target)
|
int arm7_9_assert_reset(struct target *target)
|
||||||
{
|
{
|
||||||
struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
|
struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
|
||||||
|
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
target_state_name(target));
|
target_state_name(target));
|
||||||
|
|
||||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
|
||||||
if (!(jtag_reset_config & RESET_HAS_SRST))
|
if (!(jtag_reset_config & RESET_HAS_SRST))
|
||||||
{
|
{
|
||||||
LOG_ERROR("Can't assert SRST");
|
LOG_ERROR("Can't assert SRST");
|
||||||
|
@ -973,28 +975,43 @@ int arm7_9_assert_reset(struct target *target)
|
||||||
if (target->reset_halt)
|
if (target->reset_halt)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Some targets do not support communication while SRST is asserted. We need to
|
* For targets that don't support communication while SRST is
|
||||||
* set up the reset vector catch here.
|
* asserted, we need to set up the reset vector catch first.
|
||||||
*
|
*
|
||||||
* If TRST is asserted, then these settings will be reset anyway, so setting them
|
* When we use TRST+SRST and that's equivalent to a power-up
|
||||||
* here is harmless.
|
* reset, these settings may well be reset anyway; so setting
|
||||||
|
* them here won't matter.
|
||||||
*/
|
*/
|
||||||
if (arm7_9->has_vector_catch)
|
if (arm7_9->has_vector_catch)
|
||||||
{
|
{
|
||||||
/* program vector catch register to catch reset vector */
|
/* program vector catch register to catch reset */
|
||||||
embeddedice_write_reg(&arm7_9->eice_cache->reg_list[EICE_VEC_CATCH], 0x1);
|
embeddedice_write_reg(&arm7_9->eice_cache
|
||||||
|
->reg_list[EICE_VEC_CATCH], 0x1);
|
||||||
|
|
||||||
/* extra runtest added as issues were found with certain ARM9 cores (maybe more) - AT91SAM9260 and STR9 */
|
/* extra runtest added as issues were found with
|
||||||
|
* certain ARM9 cores (maybe more) - AT91SAM9260
|
||||||
|
* and STR9
|
||||||
|
*/
|
||||||
jtag_add_runtest(1, jtag_get_end_state());
|
jtag_add_runtest(1, jtag_get_end_state());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* program watchpoint unit to match on reset vector address */
|
/* program watchpoint unit to match on reset vector
|
||||||
embeddedice_write_reg(&arm7_9->eice_cache->reg_list[EICE_W0_ADDR_VALUE], 0x0);
|
* address
|
||||||
embeddedice_write_reg(&arm7_9->eice_cache->reg_list[EICE_W0_ADDR_MASK], 0x3);
|
*/
|
||||||
embeddedice_write_reg(&arm7_9->eice_cache->reg_list[EICE_W0_DATA_MASK], 0xffffffff);
|
embeddedice_write_reg(&arm7_9->eice_cache
|
||||||
embeddedice_write_reg(&arm7_9->eice_cache->reg_list[EICE_W0_CONTROL_VALUE], EICE_W_CTRL_ENABLE);
|
->reg_list[EICE_W0_ADDR_VALUE], 0x0);
|
||||||
embeddedice_write_reg(&arm7_9->eice_cache->reg_list[EICE_W0_CONTROL_MASK], ~EICE_W_CTRL_nOPC & 0xff);
|
embeddedice_write_reg(&arm7_9->eice_cache
|
||||||
|
->reg_list[EICE_W0_ADDR_MASK], 0x3);
|
||||||
|
embeddedice_write_reg(&arm7_9->eice_cache
|
||||||
|
->reg_list[EICE_W0_DATA_MASK],
|
||||||
|
0xffffffff);
|
||||||
|
embeddedice_write_reg(&arm7_9->eice_cache
|
||||||
|
->reg_list[EICE_W0_CONTROL_VALUE],
|
||||||
|
EICE_W_CTRL_ENABLE);
|
||||||
|
embeddedice_write_reg(&arm7_9->eice_cache
|
||||||
|
->reg_list[EICE_W0_CONTROL_MASK],
|
||||||
|
~EICE_W_CTRL_nOPC & 0xff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1012,9 +1029,10 @@ int arm7_9_assert_reset(struct target *target)
|
||||||
|
|
||||||
register_cache_invalidate(arm7_9->armv4_5_common.core_cache);
|
register_cache_invalidate(arm7_9->armv4_5_common.core_cache);
|
||||||
|
|
||||||
if ((target->reset_halt) && ((jtag_reset_config & RESET_SRST_PULLS_TRST) == 0))
|
if (target->reset_halt
|
||||||
|
&& !(jtag_reset_config & RESET_SRST_PULLS_TRST))
|
||||||
{
|
{
|
||||||
/* debug entry was already prepared in arm7_9_assert_reset() */
|
/* debug entry was prepared above */
|
||||||
target->debug_reason = DBG_REASON_DBGRQ;
|
target->debug_reason = DBG_REASON_DBGRQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue