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/+/6827

-- gerrit

commit effa59ac8b85f9620e1f7034ed4da5634a80eee4
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Mon Jan 3 10:08:35 2022 +0100

    arm_adi_v5: parse ROM tables behind SoC-600 APv1 adapter
    
    Arm "CoreSight System-on-Chip SoC-600" specification describes a
    bridge "Access Port v1 adapter" aimed to "connect a legacy Access
    Port (AP) ... into an CoreSight Architecture v3 system".
    
    A ROM table can be located in the "legacy" part of the system,
    on the legacy AP behind the APv1 adapter.
    
    For the purpose of scanning the ROM tables, consider an ADIv6
    SoC-600 APv1 adapter as an ADIv5 AP.
    
    Change-Id: I97d42fb77013c1251fb68d0caa4274086bf38a70
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index fbfb28c99..df011d274 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -931,6 +931,7 @@ static const struct {
 #define DEVARCH_MEM_AP          ARCH_ID(ARM_ID, 0x0A17)
 #define DEVARCH_CTI             ARCH_ID(ARM_ID, 0x1A14)
 #define DEVARCH_ROM_C_0X9       ARCH_ID(ARM_ID, 0x0AF7)
+#define DEVARCH_UNKNOWN_V2      ARCH_ID(ARM_ID, 0x0A47)
 
 static const char *class0x9_devarch_description(uint32_t devarch)
 {
@@ -1857,8 +1858,16 @@ static int rtp_cs_component(enum coresight_access_mode 
mode, const struct rtp_op
                if ((v.devarch & ARM_CS_C9_DEVARCH_PRESENT) == 0)
                        return ERROR_OK;
 
-               if (is_mem_ap && (v.devarch & DEVARCH_ID_MASK) == 
DEVARCH_MEM_AP)
-                       *is_mem_ap = true;
+               if (is_mem_ap) {
+                       if ((v.devarch & DEVARCH_ID_MASK) == DEVARCH_MEM_AP)
+                               *is_mem_ap = true;
+
+                       /* SoC-600 APv1 Adapter */
+                       if ((v.devarch & DEVARCH_ID_MASK) == DEVARCH_UNKNOWN_V2 
&&
+                                       ARM_CS_PIDR_DESIGNER(v.pid) == ARM_ID &&
+                                       ARM_CS_PIDR_PART(v.pid) == 0x9e5)
+                               *is_mem_ap = true;
+               }
 
                /* quit if not ROM table */
                if ((v.devarch & DEVARCH_ID_MASK) != DEVARCH_ROM_C_0X9)
@@ -1894,7 +1903,7 @@ static int rtp_ap(const struct rtp_ops *ops, struct 
adiv5_ap *ap, int depth)
 
                if (!is_mem_ap)
                        return ERROR_OK;
-               /* Continue for an ADIv6 MEM-AP */
+               /* Continue for an ADIv6 MEM-AP or SoC-600 APv1 Adapter */
        }
 
        /* Now we read ROM table ID registers, ref. ARM IHI 0029B sec  */

-- 

Reply via email to