ADIv5: Implement function to lookup CoreSight component
[openocd.git] / src / target / arm_adi_v5.h
index 4ee36ff1f8cfbf360e86482e9e82ca8d4e65b01a..6c1808a5cb68c007fa86dd38faf5a76b41c36a85 100644 (file)
@@ -178,7 +178,6 @@ struct adiv5_dap
        uint32_t        memaccess_tck;
        /* Size of TAR autoincrement block, ARM ADI Specification requires at least 10 bits */
        uint32_t tar_autoincr_block;
-
 };
 
 /**
@@ -232,6 +231,7 @@ struct dap_ops {
 static inline int dap_queue_idcode_read(struct adiv5_dap *dap,
                uint8_t *ack, uint32_t *data)
 {
+       assert(dap->ops != NULL);
        return dap->ops->queue_idcode_read(dap, ack, data);
 }
 
@@ -250,6 +250,7 @@ static inline int dap_queue_idcode_read(struct adiv5_dap *dap,
 static inline int dap_queue_dp_read(struct adiv5_dap *dap,
                unsigned reg, uint32_t *data)
 {
+       assert(dap->ops != NULL);
        return dap->ops->queue_dp_read(dap, reg, data);
 }
 
@@ -267,6 +268,7 @@ static inline int dap_queue_dp_read(struct adiv5_dap *dap,
 static inline int dap_queue_dp_write(struct adiv5_dap *dap,
                unsigned reg, uint32_t data)
 {
+       assert(dap->ops != NULL);
        return dap->ops->queue_dp_write(dap, reg, data);
 }
 
@@ -283,6 +285,7 @@ static inline int dap_queue_dp_write(struct adiv5_dap *dap,
 static inline int dap_queue_ap_read(struct adiv5_dap *dap,
                unsigned reg, uint32_t *data)
 {
+       assert(dap->ops != NULL);
        return dap->ops->queue_ap_read(dap, reg, data);
 }
 
@@ -298,6 +301,7 @@ static inline int dap_queue_ap_read(struct adiv5_dap *dap,
 static inline int dap_queue_ap_write(struct adiv5_dap *dap,
                unsigned reg, uint32_t data)
 {
+       assert(dap->ops != NULL);
        return dap->ops->queue_ap_write(dap, reg, data);
 }
 
@@ -314,6 +318,7 @@ static inline int dap_queue_ap_write(struct adiv5_dap *dap,
  */
 static inline int dap_queue_ap_abort(struct adiv5_dap *dap, uint8_t *ack)
 {
+       assert(dap->ops != NULL);
        return dap->ops->queue_ap_abort(dap, ack);
 }
 
@@ -329,6 +334,7 @@ static inline int dap_queue_ap_abort(struct adiv5_dap *dap, uint8_t *ack)
  */
 static inline int dap_run(struct adiv5_dap *dap)
 {
+       assert(dap->ops != NULL);
        return dap->ops->run(dap);
 }
 
@@ -373,6 +379,13 @@ int mem_ap_write_buf_u32(struct adiv5_dap *swjdp,
 /* Initialisation of the debug system, power domains and registers */
 int ahbap_debugport_init(struct adiv5_dap *swjdp);
 
+/* Probe the AP for ROM Table location */
+int dap_get_debugbase(struct adiv5_dap *dap, int apsel,
+                       uint32_t *dbgbase, uint32_t *apid);
+
+/* Lookup CoreSight component */
+int dap_lookup_cs_component(struct adiv5_dap *dap, int apsel,
+                       uint32_t dbgbase, uint8_t type, uint32_t *addr);
 
 struct target;
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)