Restore +dev suffix
[fw/openocd] / src / jtag / jtag.h
index 7f033e0e7099ab605e896d6f9194c519af14239d..4f94e991357a57a90727ffd217696671156ccf1d 100644 (file)
@@ -1,22 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
 /***************************************************************************
 *   Copyright (C) 2005 by Dominic Rath                                    *
 *   Dominic.Rath@gmx.de                                                   *
 *                                                                         *
 *   Copyright (C) 2007-2010 Ã˜yvind Harboe                                 *
 *   oyvind.harboe@zylin.com                                               *
-*                                                                         *
-*   This program is free software; you can redistribute it and/or modify  *
-*   it under the terms of the GNU General Public License as published by  *
-*   the Free Software Foundation; either version 2 of the License, or     *
-*   (at your option) any later version.                                   *
-*                                                                         *
-*   This program is distributed in the hope that it will be useful,       *
-*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
-*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
-*   GNU General Public License for more details.                          *
-*                                                                         *
-*   You should have received a copy of the GNU General Public License     *
-*   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
 ***************************************************************************/
 
 #ifndef OPENOCD_JTAG_JTAG_H
@@ -24,6 +13,7 @@
 
 #include <helper/binarybuffer.h>
 #include <helper/log.h>
+#include <helper/replacements.h>
 
 #ifndef DEBUG_JTAG_IOZ
 #define DEBUG_JTAG_IOZ 64
 typedef enum tap_state {
        TAP_INVALID = -1,
 
-#if BUILD_ZY1000
-       /* These are the old numbers. Leave as-is for now... */
-       TAP_RESET    = 0, TAP_IDLE = 8,
-       TAP_DRSELECT = 1, TAP_DRCAPTURE = 2, TAP_DRSHIFT = 3, TAP_DREXIT1 = 4,
-       TAP_DRPAUSE  = 5, TAP_DREXIT2 = 6, TAP_DRUPDATE = 7,
-       TAP_IRSELECT = 9, TAP_IRCAPTURE = 10, TAP_IRSHIFT = 11, TAP_IREXIT1 = 12,
-       TAP_IRPAUSE  = 13, TAP_IREXIT2 = 14, TAP_IRUPDATE = 15,
-
-#else
        /* Proper ARM recommended numbers */
        TAP_DREXIT2 = 0x0,
        TAP_DREXIT1 = 0x1,
@@ -72,8 +53,6 @@ typedef enum tap_state {
        TAP_IRUPDATE = 0xd,
        TAP_IRCAPTURE = 0xe,
        TAP_RESET = 0x0f,
-
-#endif
 } tap_state_t;
 
 /**
@@ -145,6 +124,9 @@ struct jtag_tap {
        /** Flag saying whether to ignore version field in expected_ids[] */
        bool ignore_version;
 
+       /** Flag saying whether to ignore the bypass bit in the code */
+       bool ignore_bypass;
+
        /** current instruction */
        uint8_t *cur_instr;
        /** Bypass register selected */
@@ -210,11 +192,11 @@ struct jtag_tap_event_action {
 };
 
 /**
- * Defines the function signature requide for JTAG event callback
+ * Defines the function signature required for JTAG event callback
  * functions, which are added with jtag_register_event_callback()
  * and removed jtag_unregister_event_callback().
  * @param event The event to handle.
- * @param prive A pointer to data that was passed to
+ * @param priv A pointer to data that was passed to
  *     jtag_register_event_callback().
  * @returns Must return ERROR_OK on success, or an error code on failure.
  *
@@ -227,31 +209,6 @@ int jtag_unregister_event_callback(jtag_event_handler_t f, void *x);
 
 int jtag_call_event_callbacks(enum jtag_event event);
 
-
-/** @returns The current JTAG speed setting. */
-int jtag_get_speed(int *speed);
-
-/**
- * Given a @a speed setting, use the interface @c speed_div callback to
- * adjust the setting.
- * @param speed The speed setting to convert back to readable KHz.
- * @returns ERROR_OK if the interface has not been initialized or on success;
- *     otherwise, the error code produced by the @c speed_div callback.
- */
-int jtag_get_speed_readable(int *speed);
-
-/** Attempt to configure the interface for the specified KHz. */
-int jtag_config_khz(unsigned khz);
-
-/**
- * Attempt to enable RTCK/RCLK. If that fails, fallback to the
- * specified frequency.
- */
-int jtag_config_rclk(unsigned fallback_speed_khz);
-
-/** Retreives the clock speed of the JTAG interface in KHz. */
-unsigned jtag_get_speed_khz(void);
-
 enum reset_types {
        RESET_NONE            = 0x0,
        RESET_HAS_TRST        = 0x1,
@@ -295,12 +252,6 @@ void jtag_set_verify_capture_ir(bool enable);
 /** @returns True if IR scan verification will be performed. */
 bool jtag_will_verify_capture_ir(void);
 
-/** Initialize debug adapter upon startup.  */
-int adapter_init(struct command_context *cmd_ctx);
-
-/** Shutdown the debug adapter upon program exit. */
-int adapter_quit(void);
-
 /** Set ms to sleep after jtag_execute_queue() flushes queue. Debug purposes. */
 void jtag_set_flush_queue_sleep(int ms);
 
@@ -392,7 +343,7 @@ typedef intptr_t jtag_callback_data_t;
 typedef void (*jtag_callback1_t)(jtag_callback_data_t data0);
 
 /** A simpler version of jtag_add_callback4(). */
-void jtag_add_callback(jtag_callback1_t, jtag_callback_data_t data0);
+void jtag_add_callback(jtag_callback1_t f, jtag_callback_data_t data0);
 
 
 /**
@@ -407,7 +358,7 @@ void jtag_add_callback(jtag_callback1_t, jtag_callback_data_t data0);
  * assumptions about what the callback does or what its arguments are.
  * These callbacks are typically executed *after* the *entire* JTAG
  * queue has been executed for e.g. USB interfaces, and they are
- * guaranteeed to be invoked in the order that they were queued.
+ * guaranteed to be invoked in the order that they were queued.
  *
  * If the execution of the queue fails before the callbacks, then --
  * depending on driver implementation -- the callbacks may or may not be
@@ -457,7 +408,7 @@ void jtag_add_tlr(void);
  * path when transitioning to/from end
  * state.
  *
- * A list of unambigious single clock state transitions, not
+ * A list of unambiguous single clock state transitions, not
  * all drivers can support this, but it is required for e.g.
  * XScale and Xilinx support
  *
@@ -584,7 +535,8 @@ int jtag_srst_asserted(int *srst_asserted);
  * @param field Pointer to scan field.
  * @param value Pointer to scan value.
  * @param mask Pointer to scan mask; may be NULL.
- * @returns Nothing, but calls jtag_set_error() on any error.
+ *
+ * returns Nothing, but calls jtag_set_error() on any error.
  */
 void jtag_check_value_mask(struct scan_field *field, uint8_t *value, uint8_t *mask);
 
@@ -635,9 +587,19 @@ bool jtag_poll_get_enabled(void);
  */
 void jtag_poll_set_enabled(bool value);
 
+/**
+ * Mask (disable) polling and return the current mask status that should be
+ * feed to jtag_poll_unmask() to restore it.
+ * Multiple nested calls to jtag_poll_mask() are allowed, each balanced with
+ * its call to jtag_poll_unmask().
+ */
+bool jtag_poll_mask(void);
+
+/**
+ * Restore saved mask for polling.
+ */
+void jtag_poll_unmask(bool saved);
 
-/* The minidriver may have inline versions of some of the low
- * level APIs that are used in inner loops. */
 #include <jtag/minidriver.h>
 
 int jim_jtag_newtap(Jim_Interp *interp, int argc, Jim_Obj *const *argv);