adi_v5_dapdirect: add support for adapter drivers that provide DAP API
[openocd.git] / src / jtag / core.c
index 5e9777e74145d796ebe9f4cc03d411bfe04ef19d..111b122d95ef70f9cb94ca5c0e6754ef23110d5c 100644 (file)
@@ -126,10 +126,10 @@ static int rclk_fallback_speed_khz;
 static enum {CLOCK_MODE_UNSELECTED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode;
 static int jtag_speed;
 
-static struct jtag_interface *jtag;
+/* FIXME: change name to this variable, it is not anymore JTAG only */
+static struct adapter_driver *jtag;
 
-/* configuration */
-struct jtag_interface *jtag_interface;
+extern struct adapter_driver *adapter_driver;
 
 void jtag_set_flush_queue_sleep(int ms)
 {
@@ -503,7 +503,7 @@ int jtag_add_tms_seq(unsigned nbits, const uint8_t *seq, enum tap_state state)
 {
        int retval;
 
-       if (!(jtag->supported & DEBUG_CAP_TMS_SEQ))
+       if (!(jtag->jtag_ops->supported & DEBUG_CAP_TMS_SEQ))
                return ERROR_JTAG_NOT_IMPLEMENTED;
 
        jtag_checks();
@@ -946,11 +946,11 @@ int default_interface_jtag_execute_queue(void)
                 * The fix can be applied immediately after next release (v0.11.0 ?)
                 */
                LOG_ERROR("JTAG API jtag_execute_queue() called on non JTAG interface");
-               if (!jtag->execute_queue)
+               if (!jtag->jtag_ops || !jtag->jtag_ops->execute_queue)
                        return ERROR_OK;
        }
 
-       int result = jtag->execute_queue();
+       int result = jtag->jtag_ops->execute_queue();
 
 #if !BUILD_ZY1000
        /* Only build this if we use a regular driver with a command queue.
@@ -1518,7 +1518,7 @@ int adapter_init(struct command_context *cmd_ctx)
        if (jtag)
                return ERROR_OK;
 
-       if (!jtag_interface) {
+       if (!adapter_driver) {
                /* nothing was previously specified by "interface" command */
                LOG_ERROR("Debug Adapter has to be specified, "
                        "see \"interface\" command");
@@ -1526,10 +1526,10 @@ int adapter_init(struct command_context *cmd_ctx)
        }
 
        int retval;
-       retval = jtag_interface->init();
+       retval = adapter_driver->init();
        if (retval != ERROR_OK)
                return retval;
-       jtag = jtag_interface;
+       jtag = adapter_driver;
 
        if (jtag->speed == NULL) {
                LOG_INFO("This adapter doesn't support configurable speed");
@@ -2052,7 +2052,8 @@ int adapter_assert_reset(void)
                else
                        jtag_add_reset(0, 1);
                return ERROR_OK;
-       } else if (transport_is_swd() || transport_is_hla())
+       } else if (transport_is_swd() || transport_is_hla() ||
+                          transport_is_dapdirect_jtag() || transport_is_dapdirect_swd())
                return adapter_system_reset(1);
        else if (get_current_transport() != NULL)
                LOG_ERROR("reset is not supported on %s",
@@ -2067,7 +2068,8 @@ int adapter_deassert_reset(void)
        if (transport_is_jtag()) {
                jtag_add_reset(0, 0);
                return ERROR_OK;
-       } else if (transport_is_swd() || transport_is_hla())
+       } else if (transport_is_swd() || transport_is_hla() ||
+                        transport_is_dapdirect_jtag() || transport_is_dapdirect_swd())
                return adapter_system_reset(0);
        else if (get_current_transport() != NULL)
                LOG_ERROR("reset is not supported on %s",

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)