This is an automated email from Gerrit.

"Antonio Borneo <borneo.anto...@gmail.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8203

-- gerrit

commit c25856ef159d16a02a75a359c480cc24dc58e2a9
Author: Antonio Borneo <borneo.anto...@gmail.com>
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 <borneo.anto...@gmail.com>

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index f0ff9b03e3..b9e5c18ab0 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -25,8 +25,28 @@
  */
 #if 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;

-- 

Reply via email to