cortex_m3: change cortec_m3 reset_config behaviour
authorSpencer Oliver <ntfreak@users.sourceforge.net>
Thu, 2 Dec 2010 12:58:50 +0000 (12:58 +0000)
committerSpencer Oliver <ntfreak@users.sourceforge.net>
Fri, 3 Dec 2010 09:02:07 +0000 (09:02 +0000)
Currently the cmd 'cortex_m3 reset_config' will overide the default
target's 'reset_config'.
Chnage the behaviour to use the target 'reset_config' if configured and
fallback if not.

Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
src/target/cortex_m3.c
src/target/cortex_m3.h

index f2947ad118be189bc68ebb3aea2b14e4da2e29b4..93c88c0933c47c934e6aa19385edc629153642f8 100644 (file)
@@ -927,16 +927,6 @@ static int cortex_m3_assert_reset(struct target *target)
 
        enum reset_types jtag_reset_config = jtag_get_reset_config();
 
-       /*
-        * We can reset Cortex-M3 targets using just the NVIC without
-        * requiring SRST, getting a SoC reset (or a core-only reset)
-        * instead of a system reset.
-        */
-       if (!(jtag_reset_config & RESET_HAS_SRST) &&
-                       (cortex_m3->soft_reset_config == CORTEX_M3_RESET_SRST)) {
-               reset_config = CORTEX_M3_RESET_VECTRESET;
-       }
-
        /* Enable debug requests */
        int retval;
        retval = mem_ap_read_atomic_u32(swjdp, DCB_DHCSR, &cortex_m3->dcb_dhcsr);
@@ -984,7 +974,7 @@ static int cortex_m3_assert_reset(struct target *target)
                        return retval;
        }
 
-       if (reset_config == CORTEX_M3_RESET_SRST)
+       if (jtag_reset_config & RESET_HAS_SRST)
        {
                /* default to asserting srst */
                if (jtag_reset_config & RESET_SRST_PULLS_TRST)
@@ -1945,7 +1935,7 @@ static int cortex_m3_init_arch_info(struct target *target,
 
        /* default reset mode is to use srst if fitted
         * if not it will use CORTEX_M3_RESET_VECTRESET */
-       cortex_m3->soft_reset_config = CORTEX_M3_RESET_SRST;
+       cortex_m3->soft_reset_config = CORTEX_M3_RESET_VECTRESET;
 
        armv7m->arm.dap = &armv7m->dap;
 
@@ -2138,16 +2128,10 @@ COMMAND_HANDLER(handle_cortex_m3_reset_config_command)
                        cortex_m3->soft_reset_config = CORTEX_M3_RESET_SYSRESETREQ;
                else if (strcmp(*CMD_ARGV, "vectreset") == 0)
                        cortex_m3->soft_reset_config = CORTEX_M3_RESET_VECTRESET;
-               else
-                       cortex_m3->soft_reset_config = CORTEX_M3_RESET_SRST;
        }
 
        switch (cortex_m3->soft_reset_config)
        {
-               case CORTEX_M3_RESET_SRST:
-                       reset_config = "srst";
-                       break;
-
                case CORTEX_M3_RESET_SYSRESETREQ:
                        reset_config = "sysresetreq";
                        break;
index db8071110edbc9b25dc73a48cc5059774eb54f40..e1f8ef8039018f642c068cb5216f6f7dfacb6bfc 100644 (file)
@@ -136,7 +136,6 @@ struct cortex_m3_dwt_comparator
 
 enum cortex_m3_soft_reset_config
 {
-       CORTEX_M3_RESET_SRST,
        CORTEX_M3_RESET_SYSRESETREQ,
        CORTEX_M3_RESET_VECTRESET,
 };