This is an automated email from Gerrit.

"Antonio Borneo <borneo.anto...@gmail.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7900

-- gerrit

commit d28e34cedb98400ee0449bfce7d8f40d409b6113
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Sun Sep 17 11:15:22 2023 +0200

    itm: fix default initialization
    
    Commit f9509c92dba3 ("itm: rework itm commands before 'init'")
    ignores the default enable of ITM channel 0, that is applied when
    no 'itm port[s]' is issued.
    
    Call armv7m_trace_itm_config() unconditionally to handle it.
    
    Change-Id: I3e85d0b063ed38c1552f6af9ea9eea2e76aa9025
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>
    Reported-by: Paul Fertser <fercer...@gmail.com>
    Fixes: f9509c92dba3 ("itm: rework itm commands before 'init'")

diff --git a/src/target/armv7m_trace.c b/src/target/armv7m_trace.c
index 45117d2db8..556568d71a 100644
--- a/src/target/armv7m_trace.c
+++ b/src/target/armv7m_trace.c
@@ -92,11 +92,14 @@ COMMAND_HANDLER(handle_itm_port_command)
        else
                armv7m->trace_config.itm_ter[reg_idx] &= ~(1 << port);
 
-       if (CMD_CTX->mode == COMMAND_EXEC)
-               return armv7m_trace_itm_config(target);
+       /*
+        * In config mode ITM is not accessible yet.
+        * Keep the value and it will be programmed at target init.
+        */
+       if (CMD_CTX->mode == COMMAND_CONFIG)
+               return ERROR_OK;
 
-       armv7m->trace_config.itm_deferred_config = true;
-       return ERROR_OK;
+       return armv7m_trace_itm_config(target);
 }
 
 COMMAND_HANDLER(handle_itm_ports_command)
@@ -112,11 +115,14 @@ COMMAND_HANDLER(handle_itm_ports_command)
        memset(armv7m->trace_config.itm_ter, enable ? 0xff : 0,
               sizeof(armv7m->trace_config.itm_ter));
 
-       if (CMD_CTX->mode == COMMAND_EXEC)
-               return armv7m_trace_itm_config(target);
+       /*
+        * In config mode ITM is not accessible yet.
+        * Keep the value and it will be programmed at target init.
+        */
+       if (CMD_CTX->mode == COMMAND_CONFIG)
+               return ERROR_OK;
 
-       armv7m->trace_config.itm_deferred_config = true;
-       return ERROR_OK;
+       return armv7m_trace_itm_config(target);
 }
 
 static const struct command_registration itm_command_handlers[] = {
diff --git a/src/target/armv7m_trace.h b/src/target/armv7m_trace.h
index 5abb0b9406..02eca932df 100644
--- a/src/target/armv7m_trace.h
+++ b/src/target/armv7m_trace.h
@@ -35,8 +35,6 @@ struct armv7m_trace_config {
        bool itm_async_timestamps;
        /** Enable synchronisation packet transmission (for sync port only) */
        bool itm_synchro_packets;
-       /** Config ITM after target examine */
-       bool itm_deferred_config;
 };
 
 extern const struct command_registration armv7m_trace_command_handlers[];
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c
index 014ceaebaa..cdbfe30bea 100644
--- a/src/target/cortex_m.c
+++ b/src/target/cortex_m.c
@@ -2647,8 +2647,8 @@ int cortex_m_examine(struct target *target)
                if (retval != ERROR_OK)
                        return retval;
 
-               if (armv7m->trace_config.itm_deferred_config)
-                       armv7m_trace_itm_config(target);
+               /* Configure ITM */
+               armv7m_trace_itm_config(target);
 
                /* NOTE: FPB and DWT are both optional. */
 

-- 

Reply via email to