|
From: openocd-gerrit <ope...@us...> - 2025-09-27 14:55:46
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Main OpenOCD repository".
The branch, master has been updated
via 981ae530fc4fcca57a5e66b0459783b92ccbc29f (commit)
via fcbdab78c918f6dc014d953836ef66e03e07c336 (commit)
from 82d0aac95b7440f62ee29e1888809c52503a3220 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 981ae530fc4fcca57a5e66b0459783b92ccbc29f
Author: Antonio Borneo <bor...@gm...>
Date: Sun Apr 7 17:45:07 2024 +0200
jtag: linuxgpiod: use libgpiod v2 to set gpio state
Define and use dummy functions from v2 for v1:
- gpiod_line_settings_new(),
- gpiod_line_settings_free(),
- gpiod_line_settings_set_direction(),
- gpiod_line_settings_set_output_value().
Change-Id: I7d147fa49daf1d008744fab5bf0001c570ea43d6
Signed-off-by: Antonio Borneo <bor...@gm...>
Reviewed-on: https://review.openocd.org/c/openocd/+/8203
Tested-by: jenkins
Reviewed-by: Tomas Vanek <va...@fb...>
diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 6336a56d0..fa0b38ebb 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -25,8 +25,28 @@
*/
#ifdef HAVE_LIBGPIOD_V1
+#define GPIOD_LINE_DIRECTION_INPUT GPIOD_LINE_REQUEST_DIRECTION_INPUT
+#define GPIOD_LINE_DIRECTION_OUTPUT GPIOD_LINE_REQUEST_DIRECTION_OUTPUT
+
+#define GPIOD_LINE_VALUE_INACTIVE 0
+#define GPIOD_LINE_VALUE_ACTIVE 1
+
#define gpiod_request_config gpiod_line_request_config
+struct gpiod_line_settings {
+ int direction;
+ int value;
+};
+
+static struct gpiod_line_settings *gpiod_line_settings_new(void)
+{
+ static struct gpiod_line_settings my;
+
+ my = (struct gpiod_line_settings) { 0 };
+
+ return &my;
+}
+
static struct gpiod_request_config *gpiod_request_config_new(void)
{
static struct gpiod_request_config my;
@@ -36,10 +56,30 @@ static struct gpiod_request_config *gpiod_request_config_new(void)
return &my;
}
+static void gpiod_line_settings_free(struct gpiod_line_settings *settings)
+{
+}
+
static void gpiod_request_config_free(struct gpiod_request_config *config)
{
}
+static int gpiod_line_settings_set_direction(struct gpiod_line_settings *settings,
+ int direction)
+{
+ settings->direction = direction;
+
+ return 0;
+}
+
+static int gpiod_line_settings_set_output_value(struct gpiod_line_settings *settings,
+ int value)
+{
+ settings->value = value;
+
+ return 0;
+}
+
static void gpiod_request_config_set_consumer(struct gpiod_request_config *config,
const char *consumer)
{
@@ -309,7 +349,7 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
if (!is_gpio_config_valid(idx))
return ERROR_OK;
- int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval;
+ int flags = 0, retval;
snprintf(chip_path, sizeof(chip_path), "/dev/gpiochip%u", adapter_gpio_config[idx].chip_num);
gpiod_chip[idx] = gpiod_chip_open(chip_path);
@@ -325,8 +365,10 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
return ERROR_JTAG_INIT_FAILED;
}
+ struct gpiod_line_settings *line_settings = gpiod_line_settings_new();
struct gpiod_request_config *req_cfg = gpiod_request_config_new();
- if (!req_cfg) {
+
+ if (!line_settings || !req_cfg) {
LOG_ERROR("Cannot configure LinuxGPIOD line for %s", adapter_gpio_get_name(idx));
retval = ERROR_JTAG_INIT_FAILED;
goto err_out;
@@ -336,15 +378,15 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
switch (adapter_gpio_config[idx].init_state) {
case ADAPTER_GPIO_INIT_STATE_INPUT:
- dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT;
+ gpiod_line_settings_set_direction(line_settings, GPIOD_LINE_DIRECTION_INPUT);
break;
case ADAPTER_GPIO_INIT_STATE_INACTIVE:
- dir = GPIOD_LINE_REQUEST_DIRECTION_OUTPUT;
- val = 0;
+ gpiod_line_settings_set_direction(line_settings, GPIOD_LINE_DIRECTION_OUTPUT);
+ gpiod_line_settings_set_output_value(line_settings, GPIOD_LINE_VALUE_INACTIVE);
break;
case ADAPTER_GPIO_INIT_STATE_ACTIVE:
- dir = GPIOD_LINE_REQUEST_DIRECTION_OUTPUT;
- val = 1;
+ gpiod_line_settings_set_direction(line_settings, GPIOD_LINE_DIRECTION_OUTPUT);
+ gpiod_line_settings_set_output_value(line_settings, GPIOD_LINE_VALUE_ACTIVE);
break;
}
@@ -386,10 +428,10 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
if (adapter_gpio_config[idx].active_low)
flags |= GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
- req_cfg->request_type = dir;
+ req_cfg->request_type = line_settings->direction;
req_cfg->flags = flags;
- retval = gpiod_line_request(gpiod_line[idx], req_cfg, val);
+ retval = gpiod_line_request(gpiod_line[idx], req_cfg, line_settings->value);
if (retval < 0) {
LOG_ERROR("Error requesting gpio line %s", adapter_gpio_get_name(idx));
retval = ERROR_JTAG_INIT_FAILED;
@@ -399,6 +441,7 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
retval = ERROR_OK;
err_out:
+ gpiod_line_settings_free(line_settings);
gpiod_request_config_free(req_cfg);
return retval;
commit fcbdab78c918f6dc014d953836ef66e03e07c336
Author: Antonio Borneo <bor...@gm...>
Date: Sun Apr 7 17:18:40 2024 +0200
jtag: linuxgpiod: wrap gpiod_request_config from libgpiod v2
Reorganize the code of helper_get_line() for label err_out.
Define and use dummy functions from v2 for v1:
- gpiod_request_config_new(),
- gpiod_request_config_free(),
- gpiod_request_config_set_consumer().
Change-Id: Ide7cd8459941a5a863c425a2b5abf1fb4a075874
Signed-off-by: Antonio Borneo <bor...@gm...>
Reviewed-on: https://review.openocd.org/c/openocd/+/8202
Tested-by: jenkins
Reviewed-by: Tomas Vanek <va...@fb...>
diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 6f71205ca..6336a56d0 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -19,6 +19,35 @@
#include <transport/transport.h>
#include "bitbang.h"
+/*
+ * In case of libgpiod v1, use as much as possible API from v2 plus
+ * the dummy wrappers below.
+ */
+#ifdef HAVE_LIBGPIOD_V1
+
+#define gpiod_request_config gpiod_line_request_config
+
+static struct gpiod_request_config *gpiod_request_config_new(void)
+{
+ static struct gpiod_request_config my;
+
+ my = (struct gpiod_request_config) { NULL, 0, 0 };
+
+ return &my;
+}
+
+static void gpiod_request_config_free(struct gpiod_request_config *config)
+{
+}
+
+static void gpiod_request_config_set_consumer(struct gpiod_request_config *config,
+ const char *consumer)
+{
+ config->consumer = consumer;
+}
+
+#endif /* HAVE_LIBGPIOD_V1 */
+
static struct gpiod_chip *gpiod_chip[ADAPTER_GPIO_IDX_NUM] = {};
static struct gpiod_line *gpiod_line[ADAPTER_GPIO_IDX_NUM] = {};
@@ -296,6 +325,15 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
return ERROR_JTAG_INIT_FAILED;
}
+ struct gpiod_request_config *req_cfg = gpiod_request_config_new();
+ if (!req_cfg) {
+ LOG_ERROR("Cannot configure LinuxGPIOD line for %s", adapter_gpio_get_name(idx));
+ retval = ERROR_JTAG_INIT_FAILED;
+ goto err_out;
+ }
+
+ gpiod_request_config_set_consumer(req_cfg, "OpenOCD");
+
switch (adapter_gpio_config[idx].init_state) {
case ADAPTER_GPIO_INIT_STATE_INPUT:
dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT;
@@ -348,19 +386,22 @@ static int helper_get_line(enum adapter_gpio_config_index idx)
if (adapter_gpio_config[idx].active_low)
flags |= GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
- struct gpiod_line_request_config config = {
- .consumer = "OpenOCD",
- .request_type = dir,
- .flags = flags,
- };
+ req_cfg->request_type = dir;
+ req_cfg->flags = flags;
- retval = gpiod_line_request(gpiod_line[idx], &config, val);
+ retval = gpiod_line_request(gpiod_line[idx], req_cfg, val);
if (retval < 0) {
LOG_ERROR("Error requesting gpio line %s", adapter_gpio_get_name(idx));
- return ERROR_JTAG_INIT_FAILED;
+ retval = ERROR_JTAG_INIT_FAILED;
+ goto err_out;
}
- return ERROR_OK;
+ retval = ERROR_OK;
+
+err_out:
+ gpiod_request_config_free(req_cfg);
+
+ return retval;
}
static int linuxgpiod_init(void)
-----------------------------------------------------------------------
Summary of changes:
src/jtag/drivers/linuxgpiod.c | 112 ++++++++++++++++++++++++++++++++++++------
1 file changed, 98 insertions(+), 14 deletions(-)
hooks/post-receive
--
Main OpenOCD repository
|