build: add common.mk
[openocd.git] / src / jtag / interface.h
index 899f16318f081676d264cd21240b88e1834fbd37..3226944e3f5b5ea04f51989f35a10d597c7d3559 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef OPENOCD_JTAG_INTERFACE_H
 #define OPENOCD_JTAG_INTERFACE_H
 
-#include "jtag.h"
+#include <jtag/jtag.h>
 
 /* @file
  * The "Cable Helper API" is what the cable drivers can use to help
@@ -160,9 +160,6 @@ bool tap_is_state_stable(tap_state_t astate);
  */
 tap_state_t tap_state_transition(tap_state_t current_state, bool tms);
 
-/// Provides user-friendly name lookup of TAP states.
-tap_state_t tap_state_by_name(const char *name);
-
 /// Allow switching between old and new TMS tables. @see tap_get_tms_path
 void tap_use_new_tms_table(bool use_new);
 /// @returns True if new TMS table is active; false otherwise.
@@ -187,11 +184,31 @@ static inline tap_state_t jtag_debug_state_machine(const void *tms_buf,
 }
 #endif // _DEBUG_JTAG_IO_
 
-typedef struct jtag_interface_s
-{
+/**
+ * Represents a driver for a debugging interface.
+ *
+ * @todo Rename; perhaps "debug_driver".  This isn't an interface,
+ * it's a driver!  Also, not all drivers support JTAG.
+ *
+ * @todo We need a per-instance structure too, and changes to pass
+ * that structure to the driver.  Instances can for example be in
+ * either SWD or JTAG modes.  This will help remove globals, and
+ * eventually to cope with systems which have more than one such
+ * debugging interface.
+ */
+struct jtag_interface {
        /// The name of the JTAG interface driver.
        char* name;
 
+       /**
+        * Bit vector listing capabilities exposed by this driver.
+        */
+       unsigned supported;
+#define DEBUG_CAP_TMS_SEQ      (1 << 0)
+
+       /** transports supported in C code (NULL terminated vector) */
+       const char **transports;
+
        /**
         * Execute queued commands.
         * @returns ERROR_OK on success, or an error code on failure.
@@ -208,10 +225,8 @@ typedef struct jtag_interface_s
        /**
         * The interface driver may register additional commands to expose
         * additional features not covered by the standard command set.
-        * @param cmd_ctx The context in which commands should be registered.
-        * @returns ERROR_OK on success, or an error code on failure.
         */
-       int (*register_commands)(struct command_context_s* cmd_ctx);
+       const struct command_registration *commands;
 
        /**
         * Interface driver must initalize any resources and connect to a
@@ -274,7 +289,9 @@ typedef struct jtag_interface_s
         * @returns ERROR_OK on success, or an error code on failure.
         */
        int (*srst_asserted)(int* srst_asserted);
-} jtag_interface_t;
+};
+
 
+extern const char *jtag_only[];
 
 #endif // OPENOCD_JTAG_INTERFACE_H

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)