X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fjtag.h;h=c93243c4782f818c5ab26d1942edc7edf3876f74;hp=feb4614fa6fe5c6ff3cd06baf4cef70102c8f87c;hb=HEAD;hpb=87c90393fedc8bb278d189aa53bcd93f4892012b
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index feb4614fa6..470ae18334 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -1,28 +1,18 @@
+/* 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 . *
***************************************************************************/
#ifndef OPENOCD_JTAG_JTAG_H
#define OPENOCD_JTAG_JTAG_H
#include
+#include
#include
#include
@@ -125,7 +115,7 @@ struct jtag_tap {
uint32_t idcode; /**< device identification code */
/** not all devices have idcode,
* we'll discover this during chain examination */
- bool hasidcode;
+ bool has_idcode;
/** Array of expected identification codes */
uint32_t *expected_ids;
@@ -135,10 +125,16 @@ 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 */
- int bypass;
+ bool bypass;
+
+ /** Bypass instruction value */
+ uint64_t ir_bypass_value;
struct jtag_tap_event_action *event_action;
@@ -217,31 +213,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);
-
-/** Retrieves 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,
@@ -285,12 +256,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);
@@ -574,7 +539,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);
@@ -625,8 +591,21 @@ 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);
+
#include
-int jim_jtag_newtap(Jim_Interp *interp, int argc, Jim_Obj *const *argv);
+__COMMAND_HANDLER(handle_jtag_newtap);
#endif /* OPENOCD_JTAG_JTAG_H */