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>
This commit is contained in:
committed by
Antonio Borneo
parent
3adbec9aab
commit
82fd400542
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user