This is an automated email from Gerrit.

"Daniel Goehring <[email protected]>" just uploaded a new patch 
set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/9255

-- gerrit

commit 0178ab8d293b340f38740b0a60c1f859c4da3dad
Author: Daniel Goehring <[email protected]>
Date:   Mon Jul 14 20:41:13 2025 -0600

    target/arm: add nested AP DAP 'apcsw' cmd support
    
    Add nested AP support to the DAP 'apcsw' command.
    
    Change-Id: I1e4ac9807421b1a57a3b99e5839051eecac47a88
    Signed-off-by: Daniel Goehring <[email protected]>

diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index b99c67ee5c..adf43bd1aa 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -2836,13 +2836,22 @@ COMMAND_HANDLER(dap_apcsw_command)
 
        switch (CMD_ARGC) {
        case 0:
-               ap = dap_get_ap(dap, dap->apsel);
+               if (dap->apsel_gateway == DP_APSEL_INVALID)
+                       ap = dap_get_ap(dap, dap->apsel);
+               else
+                       ap = dap_get_ap_gateway(dap, dap->apsel, 
dap->apsel_gateway);
+
                if (!ap) {
                        command_print(CMD, "Cannot get AP");
                        return ERROR_FAIL;
                }
-               command_print(CMD, "AP#0x%" PRIx64 " selected, csw 0x%8.8" 
PRIx32,
-                       dap->apsel, ap->csw_default);
+
+               if (dap->apsel_gateway == DP_APSEL_INVALID)
+                       command_print(CMD, "AP#0x%" PRIx64 " selected, csw 
0x%8.8" PRIx32,
+                               dap->apsel, ap->csw_default);
+               else
+                       command_print(CMD, "AP#0x%" PRIx64 " GW#0x%" PRIx64 " 
selected, csw 0x%8.8" PRIx32,
+                               dap->apsel, dap->apsel_gateway, 
ap->csw_default);
                break;
        case 1:
                if (strcmp(CMD_ARGV[0], "default") == 0)
@@ -2854,7 +2863,11 @@ COMMAND_HANDLER(dap_apcsw_command)
                        LOG_ERROR("CSW value cannot include 'Size' and 
'AddrInc' bit-fields");
                        return ERROR_COMMAND_ARGUMENT_INVALID;
                }
-               ap = dap_get_config_ap(dap, dap->apsel);
+               if (dap->apsel_gateway == DP_APSEL_INVALID)
+                       ap = dap_get_config_ap(dap, dap->apsel);
+               else
+                       ap = dap_get_config_ap_gateway(dap, dap->apsel, 
dap->apsel_gateway);
+
                if (!ap) {
                        command_print(CMD, "Cannot get AP");
                        return ERROR_FAIL;
@@ -2868,7 +2881,11 @@ COMMAND_HANDLER(dap_apcsw_command)
                        LOG_ERROR("CSW mask cannot include 'Size' and 'AddrInc' 
bit-fields");
                        return ERROR_COMMAND_ARGUMENT_INVALID;
                }
-               ap = dap_get_config_ap(dap, dap->apsel);
+               if (dap->apsel_gateway == DP_APSEL_INVALID)
+                       ap = dap_get_config_ap(dap, dap->apsel);
+               else
+                       ap = dap_get_config_ap_gateway(dap, dap->apsel, 
dap->apsel_gateway);
+
                if (!ap) {
                        command_print(CMD, "Cannot get AP");
                        return ERROR_FAIL;

-- 

Reply via email to