aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/adapter.h
diff options
context:
space:
mode:
authorSteve Marple <stevemarple@googlemail.com>2022-05-04 22:51:48 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2022-08-15 13:24:22 +0000
commit82fd4005427b6774a754b791bdf384f3ef45072d (patch)
tree57e3095074f8fff8d9fc1d1a209f7501c90b984b /src/jtag/adapter.h
parent3adbec9aab95808222071eb09014f28fbb6ad1be (diff)
downloadriscv-openocd-82fd4005427b6774a754b791bdf384f3ef45072d.zip
riscv-openocd-82fd4005427b6774a754b791bdf384f3ef45072d.tar.gz
riscv-openocd-82fd4005427b6774a754b791bdf384f3ef45072d.tar.bz2
jtag/adapter: Add command 'adapter gpio'
Most adapters define their own commands to obtain the GPIO number and other GPIO configuration information such as chip number, output drive type, active high/low. Define a general command 'adapter gpio' as replacement for the driver-specific ones. Change-Id: I1ca9ca94f0c7df5713172e9f62ffb0ad64e9ee97 Signed-off-by: Steve Marple <stevemarple@googlemail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/6967 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'src/jtag/adapter.h')
-rw-r--r--src/jtag/adapter.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/jtag/adapter.h b/src/jtag/adapter.h
index 300769c..625a0b2 100644
--- a/src/jtag/adapter.h
+++ b/src/jtag/adapter.h
@@ -11,6 +11,59 @@
#include <stddef.h>
#include <stdint.h>
+/** Supported output drive modes for adaptor GPIO */
+enum adapter_gpio_drive_mode {
+ ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL,
+ ADAPTER_GPIO_DRIVE_MODE_OPEN_DRAIN,
+ ADAPTER_GPIO_DRIVE_MODE_OPEN_SOURCE,
+};
+
+/** Supported GPIO directions */
+enum adapter_gpio_direction {
+ ADAPTER_GPIO_DIRECTION_INPUT,
+ ADAPTER_GPIO_DIRECTION_OUTPUT,
+ ADAPTER_GPIO_DIRECTION_BIDIRECTIONAL,
+};
+
+/** Supported initial states for GPIO */
+enum adapter_gpio_init_state {
+ ADAPTER_GPIO_INIT_STATE_INACTIVE, /* Should be zero so it is the default state */
+ ADAPTER_GPIO_INIT_STATE_ACTIVE,
+ ADAPTER_GPIO_INIT_STATE_INPUT,
+};
+
+/** Supported pull directions for GPIO */
+enum adapter_gpio_pull {
+ ADAPTER_GPIO_PULL_NONE,
+ ADAPTER_GPIO_PULL_UP,
+ ADAPTER_GPIO_PULL_DOWN,
+};
+
+/** Adapter GPIO */
+enum adapter_gpio_config_index {
+ ADAPTER_GPIO_IDX_TDO,
+ ADAPTER_GPIO_IDX_TDI,
+ ADAPTER_GPIO_IDX_TMS,
+ ADAPTER_GPIO_IDX_TCK,
+ ADAPTER_GPIO_IDX_TRST,
+ ADAPTER_GPIO_IDX_SWDIO,
+ ADAPTER_GPIO_IDX_SWDIO_DIR,
+ ADAPTER_GPIO_IDX_SWCLK,
+ ADAPTER_GPIO_IDX_SRST,
+ ADAPTER_GPIO_IDX_LED,
+ ADAPTER_GPIO_IDX_NUM, /* must be the last item */
+};
+
+/** Configuration options for a single GPIO */
+struct adapter_gpio_config {
+ int gpio_num;
+ int chip_num;
+ enum adapter_gpio_drive_mode drive; /* For outputs only */
+ enum adapter_gpio_init_state init_state;
+ bool active_low;
+ enum adapter_gpio_pull pull;
+};
+
struct command_context;
/** Register the adapter's commands */
@@ -58,4 +111,14 @@ unsigned int adapter_get_speed_khz(void);
/** Retrieves the serial number set with command 'adapter serial' */
const char *adapter_get_required_serial(void);
+/**
+ * Retrieves gpio name
+ */
+const char *adapter_gpio_get_name(enum adapter_gpio_config_index idx);
+
+/**
+ * Retrieves gpio configuration set with command 'adapter gpio <signal_name>'
+ */
+const struct adapter_gpio_config *adapter_gpio_get_config(void);
+
#endif /* OPENOCD_JTAG_ADAPTER_H */