[PATCH]: bb83b9e105 jtag: linuxgpiod: replace gpiod_chip_open_by_number()

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8201

-- gerrit

commit bb83b9e1059aee205f80e5985258f1959718e61a
Author: Antonio Borneo 
Date:   Sun Apr 7 16:00:14 2024 +0200

jtag: linuxgpiod: replace gpiod_chip_open_by_number()

Preparing for libgpiod v2, replace v1 specific function
gpiod_chip_open_by_number() with the common v1 & v2 function
gpiod_chip_open().

Change-Id: I5f0f9bef739f4097fb74f78b5b6e2fe823c1ab87
Signed-off-by: Antonio Borneo 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 1926ed9ae6..156e9cb2f5 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -275,12 +275,15 @@ static int linuxgpiod_quit(void)
 
 static int helper_get_line(enum adapter_gpio_config_index idx)
 {
+   char chip_path[24];
+
if (!is_gpio_config_valid(idx))
return ERROR_OK;
 
int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, 
retval;
 
-   gpiod_chip[idx] = 
gpiod_chip_open_by_number(adapter_gpio_config[idx].chip_num);
+   snprintf(chip_path, sizeof(chip_path), "/dev/gpiochip%u", 
adapter_gpio_config[idx].chip_num);
+   gpiod_chip[idx] = gpiod_chip_open(chip_path);
if (!gpiod_chip[idx]) {
LOG_ERROR("Cannot open LinuxGPIOD chip %d for %s", 
adapter_gpio_config[idx].chip_num,
adapter_gpio_get_name(idx));

-- 



[PATCH]: 5e16466f9b jtag: linuxgpiod: use libgpiod v2 API for gpiod_line_request()

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8207

-- gerrit

commit 5e16466f9b78696fbc44d6c2c0ca069f9aa0c310
Author: Antonio Borneo 
Date:   Sun Apr 7 21:15:48 2024 +0200

jtag: linuxgpiod: use libgpiod v2 API for gpiod_line_request()

Work in progress. Target is to replace v1 gpiod_line_request()

Define and use dummy functions from v2 for v1:
- gpiod_line_config_new(),
- gpiod_line_config_free(),
- gpiod_line_config_add_line_settings(),
- gpiod_chip_request_lines().

Change-Id: I9e2d3013845c5d12942f5e07c9721fcd151d6840
Signed-off-by: Antonio Borneo 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 21983c97ea..c7c3ae65b7 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -49,6 +49,11 @@ struct gpiod_line_settings {
int active_low;
 };
 
+struct gpiod_line_config {
+   unsigned int gpio_num;
+   struct gpiod_line_settings *line_settings;
+};
+
 static struct gpiod_line_settings *gpiod_line_settings_new(void)
 {
static struct gpiod_line_settings my;
@@ -58,6 +63,15 @@ static struct gpiod_line_settings 
*gpiod_line_settings_new(void)
return 
 }
 
+static struct gpiod_line_config *gpiod_line_config_new(void)
+{
+   static struct gpiod_line_config my;
+
+   my = (struct gpiod_line_config) { 0 };
+
+   return 
+}
+
 static struct gpiod_request_config *gpiod_request_config_new(void)
 {
static struct gpiod_request_config my;
@@ -71,6 +85,10 @@ static void gpiod_line_settings_free(struct 
gpiod_line_settings *settings)
 {
 }
 
+static void gpiod_line_config_free(struct gpiod_line_config *config)
+{
+}
+
 static void gpiod_request_config_free(struct gpiod_request_config *config)
 {
 }
@@ -111,6 +129,23 @@ static void gpiod_request_config_set_consumer(struct 
gpiod_request_config *confi
config->consumer = consumer;
 }
 
+static int gpiod_line_config_add_line_settings(struct gpiod_line_config 
*config,
+   const unsigned int *offsets, size_t num_offsets, struct 
gpiod_line_settings *settings)
+{
+   assert(num_offsets == 1);
+
+   config->gpio_num = *offsets;
+   config->line_settings = settings;
+
+   return 0;
+}
+
+static struct gpiod_line_request *gpiod_chip_request_lines(struct gpiod_chip 
*chip,
+   struct gpiod_request_config *req_cfg, struct gpiod_line_config 
*line_cfg)
+{
+   return NULL;
+}
+
 #ifdef HAVE_LIBGPIOD1_FLAGS_BIAS
 
 static int gpiod_line_settings_set_bias(struct gpiod_line_settings *settings, 
int bias)
@@ -415,9 +450,10 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
}
 
struct gpiod_line_settings *line_settings = gpiod_line_settings_new();
+   struct gpiod_line_config *line_config = gpiod_line_config_new();
struct gpiod_request_config *req_cfg = gpiod_request_config_new();
 
-   if (!line_settings || !req_cfg) {
+   if (!line_settings || !line_config || !req_cfg) {
LOG_ERROR("Cannot configure LinuxGPIOD line for %s", 
adapter_gpio_get_name(idx));
retval = ERROR_JTAG_INIT_FAILED;
goto err_out;
@@ -479,6 +515,7 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
 
 err_out:
gpiod_line_settings_free(line_settings);
+   gpiod_line_config_free(line_config);
gpiod_request_config_free(req_cfg);
 
return retval;

-- 



[PATCH]: 57088de421 jtag: linuxgpiod: use libgpiod v2 API to set gpio bias

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8205

-- gerrit

commit 57088de421b19d7aef1a26c49e018ca20a97d8ca
Author: Antonio Borneo 
Date:   Sun Apr 7 18:25:49 2024 +0200

jtag: linuxgpiod: use libgpiod v2 API to set gpio bias

Define and use dummy functions from v2 for v1:
- gpiod_line_settings_set_bias().

Change-Id: I96d32b6200d3bb6ca7c16e7a18e3860f367b5008
Signed-off-by: Antonio Borneo 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 42f3101ce8..96d915e291 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -35,12 +35,17 @@
 #define GPIOD_LINE_DRIVE_OPEN_DRAIN GPIOD_LINE_REQUEST_FLAG_OPEN_DRAIN
 #define GPIOD_LINE_DRIVE_OPEN_SOURCEGPIOD_LINE_REQUEST_FLAG_OPEN_SOURCE
 
+#define GPIOD_LINE_BIAS_DISABLEDGPIOD_LINE_REQUEST_FLAG_BIAS_DISABLE
+#define GPIOD_LINE_BIAS_PULL_UP GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP
+#define GPIOD_LINE_BIAS_PULL_DOWN   GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN
+
 #define gpiod_request_configgpiod_line_request_config
 
 struct gpiod_line_settings {
int direction;
int value;
int drive;
+   int bias;
 };
 
 static struct gpiod_line_settings *gpiod_line_settings_new(void)
@@ -98,6 +103,30 @@ static void gpiod_request_config_set_consumer(struct 
gpiod_request_config *confi
config->consumer = consumer;
 }
 
+#ifdef HAVE_LIBGPIOD1_FLAGS_BIAS
+
+static int gpiod_line_settings_set_bias(struct gpiod_line_settings *settings, 
int bias)
+{
+   settings->bias = bias;
+
+   return 0;
+}
+
+#else /* HAVE_LIBGPIOD1_FLAGS_BIAS */
+
+static int gpiod_line_settings_set_bias(struct gpiod_line_settings *settings, 
int bias)
+{
+   if (bias == GPIOD_LINE_BIAS_DISABLED)
+   return 0;
+
+   LOG_WARNING("linuxgpiod: ignoring request for pull-%s: not supported by 
gpiod v%s",
+   (bias == GPIOD_LINE_BIAS_PULL_UP) ? "up" : 
"down",
+   gpiod_version_string());
+
+   return -1;
+}
+
+#endif /* HAVE_LIBGPIOD1_FLAGS_BIAS */
 #endif /* HAVE_LIBGPIOD_V1 */
 
 static struct gpiod_chip *gpiod_chip[ADAPTER_GPIO_IDX_NUM] = {};
@@ -416,25 +445,13 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
 
switch (adapter_gpio_config[idx].pull) {
case ADAPTER_GPIO_PULL_NONE:
-#ifdef HAVE_LIBGPIOD1_FLAGS_BIAS
-   flags |= GPIOD_LINE_REQUEST_FLAG_BIAS_DISABLE;
-#endif
+   gpiod_line_settings_set_bias(line_settings, 
GPIOD_LINE_BIAS_DISABLED);
break;
case ADAPTER_GPIO_PULL_UP:
-#ifdef HAVE_LIBGPIOD1_FLAGS_BIAS
-   flags |= GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP;
-#else
-   LOG_WARNING("linuxgpiod: ignoring request for pull-up on %s: 
not supported by gpiod v%s",
-   adapter_gpio_get_name(idx), gpiod_version_string());
-#endif
+   gpiod_line_settings_set_bias(line_settings, 
GPIOD_LINE_BIAS_PULL_UP);
break;
case ADAPTER_GPIO_PULL_DOWN:
-#ifdef HAVE_LIBGPIOD1_FLAGS_BIAS
-   flags |= GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN;
-#else
-   LOG_WARNING("linuxgpiod: ignoring request for pull-down on %s: 
not supported by gpiod v%s",
-   adapter_gpio_get_name(idx), gpiod_version_string());
-#endif
+   gpiod_line_settings_set_bias(line_settings, 
GPIOD_LINE_BIAS_PULL_DOWN);
break;
}
 
@@ -442,7 +459,7 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
flags |= GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
 
req_cfg->request_type = line_settings->direction;
-   req_cfg->flags = flags | line_settings->drive;
+   req_cfg->flags = flags | line_settings->drive | line_settings->bias;
 
retval = gpiod_line_request(gpiod_line[idx], req_cfg, 
line_settings->value);
if (retval < 0) {

-- 



[PATCH]: 3688a99a13 jtag: linuxgpiod: use libgpiod v2 API to set gpio drive

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8204

-- gerrit

commit 3688a99a13f970b875f932ba0e8a18c8bd4c229b
Author: Antonio Borneo 
Date:   Sun Apr 7 18:15:48 2024 +0200

jtag: linuxgpiod: use libgpiod v2 API to set gpio drive

Define and use dummy functions from v2 for v1:
- gpiod_line_settings_set_drive().

Change-Id: Ic058e85c441c9f8db63919be5166172be5b72221
Signed-off-by: Antonio Borneo 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index b9e5c18ab0..42f3101ce8 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -31,11 +31,16 @@
 #define GPIOD_LINE_VALUE_INACTIVE   0
 #define GPIOD_LINE_VALUE_ACTIVE 1
 
+#define GPIOD_LINE_DRIVE_PUSH_PULL  0
+#define GPIOD_LINE_DRIVE_OPEN_DRAIN GPIOD_LINE_REQUEST_FLAG_OPEN_DRAIN
+#define GPIOD_LINE_DRIVE_OPEN_SOURCEGPIOD_LINE_REQUEST_FLAG_OPEN_SOURCE
+
 #define gpiod_request_configgpiod_line_request_config
 
 struct gpiod_line_settings {
int direction;
int value;
+   int drive;
 };
 
 static struct gpiod_line_settings *gpiod_line_settings_new(void)
@@ -80,6 +85,13 @@ static int gpiod_line_settings_set_output_value(struct 
gpiod_line_settings *sett
return 0;
 }
 
+static int gpiod_line_settings_set_drive(struct gpiod_line_settings *settings, 
int drive)
+{
+   settings->drive = drive;
+
+   return 0;
+}
+
 static void gpiod_request_config_set_consumer(struct gpiod_request_config 
*config,
const char *consumer)
 {
@@ -392,12 +404,13 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
 
switch (adapter_gpio_config[idx].drive) {
case ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL:
+   gpiod_line_settings_set_drive(line_settings, 
GPIOD_LINE_DRIVE_PUSH_PULL);
break;
case ADAPTER_GPIO_DRIVE_MODE_OPEN_DRAIN:
-   flags |= GPIOD_LINE_REQUEST_FLAG_OPEN_DRAIN;
+   gpiod_line_settings_set_drive(line_settings, 
GPIOD_LINE_DRIVE_OPEN_DRAIN);
break;
case ADAPTER_GPIO_DRIVE_MODE_OPEN_SOURCE:
-   flags |= GPIOD_LINE_REQUEST_FLAG_OPEN_SOURCE;
+   gpiod_line_settings_set_drive(line_settings, 
GPIOD_LINE_DRIVE_OPEN_SOURCE);
break;
}
 
@@ -429,7 +442,7 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
flags |= GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
 
req_cfg->request_type = line_settings->direction;
-   req_cfg->flags = flags;
+   req_cfg->flags = flags | line_settings->drive;
 
retval = gpiod_line_request(gpiod_line[idx], req_cfg, 
line_settings->value);
if (retval < 0) {

-- 



[PATCH]: c25856ef15 jtag: linuxgpiod: use libgpiod v2 to set gpio state

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " 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 
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 

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_configgpiod_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 
+}
+
 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 
 }
 
+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 = 

[PATCH]: 86036f4390 jtag: linuxgpiod: use libgpiod v2 API to set gpio active_low

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8206

-- gerrit

commit 86036f439052e58a0f5c24be79cc51956fd2bc0f
Author: Antonio Borneo 
Date:   Sun Apr 7 18:32:45 2024 +0200

jtag: linuxgpiod: use libgpiod v2 API to set gpio active_low

Define and use dummy functions from v2 for v1:
- gpiod_line_settings_set_active_low().

Change-Id: I2c00e1a71950215c47dc07d71af4f319434a266a
Signed-off-by: Antonio Borneo 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 96d915e291..21983c97ea 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -46,6 +46,7 @@ struct gpiod_line_settings {
int value;
int drive;
int bias;
+   int active_low;
 };
 
 static struct gpiod_line_settings *gpiod_line_settings_new(void)
@@ -97,6 +98,13 @@ static int gpiod_line_settings_set_drive(struct 
gpiod_line_settings *settings, i
return 0;
 }
 
+static void gpiod_line_settings_set_active_low(struct gpiod_line_settings 
*settings,
+   bool active_low)
+{
+   if (active_low)
+   settings->active_low = GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
+}
+
 static void gpiod_request_config_set_consumer(struct gpiod_request_config 
*config,
const char *consumer)
 {
@@ -455,11 +463,10 @@ static int helper_get_line(enum adapter_gpio_config_index 
idx)
break;
}
 
-   if (adapter_gpio_config[idx].active_low)
-   flags |= GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
+   gpiod_line_settings_set_active_low(line_settings, 
adapter_gpio_config[idx].active_low);
 
req_cfg->request_type = line_settings->direction;
-   req_cfg->flags = flags | line_settings->drive | line_settings->bias;
+   req_cfg->flags = flags | line_settings->drive | line_settings->bias | 
line_settings->active_low;
 
retval = gpiod_line_request(gpiod_line[idx], req_cfg, 
line_settings->value);
if (retval < 0) {

-- 



[PATCH]: 537735347b jtag: linuxgpiod: wrap gpiod_request_config from libgpiod v2

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8202

-- gerrit

commit 537735347b061298209e727a7e9688b057533bb4
Author: Antonio Borneo 
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 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 156e9cb2f5..f0ff9b03e3 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -19,6 +19,35 @@
 #include 
 #include "bitbang.h"
 
+/*
+ * In case of libgpiod v1, use as much as possible API from v2 plus
+ * the dummy wrappers below.
+ */
+#if HAVE_LIBGPIOD_V1
+
+#define gpiod_request_configgpiod_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 };
+
+   return 
+}
+
+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], , 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)

-- 



[PATCH]: 708e1d9210 doc: style: report indentation of multi-line condition

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8199

-- gerrit

commit 708e1d92101e28f7cbd33f6207231ee47676d01c
Author: Antonio Borneo 
Date:   Sun Apr 7 12:41:48 2024 +0200

doc: style: report indentation of multi-line condition

To help readability and discriminate the 'then' block from the
multi-line condition, suggest to increase the indentation of the
condition.

Change-Id: I02e3834be3001e7ecf24349ad3cefe94b27b79c8
Signed-off-by: Antonio Borneo 

diff --git a/doc/manual/style.txt b/doc/manual/style.txt
index 1d3ec6748d..a1e6b8f016 100644
--- a/doc/manual/style.txt
+++ b/doc/manual/style.txt
@@ -97,6 +97,21 @@ OpenOCD project.
   x = 0;
   }
   @endcode
+- on  if  statements where the condition is split among multiple
+  lines, increase the indentation of the condition to prevent it to match
+  to the indentation of the  then  block due to length of 'if ('
+  being same of the TAB width of 4 characters. Use:
+  @code
+  if (CMD_ARGC < 3
+  || CMD_ARGC > 8)
+  return ERROR_COMMAND_SYNTAX_ERROR;
+  @endcode
+  instead of:
+  @code
+  if (CMD_ARGC < 3 ||
+  CMD_ARGC > 8)
+  return ERROR_COMMAND_SYNTAX_ERROR;
+  @endcode
 
 Finally, try to avoid lines of code that are longer than 72-80 columns:
 

-- 



[PATCH]: d0522a97d6 jtag: linuxgpiod: minor alignment to coding style

2024-04-07 Thread gerrit
This is an automated email from Gerrit.

"Antonio Borneo " just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8200

-- gerrit

commit d0522a97d673f0c1e380bd91c9cc77d507814962
Author: Antonio Borneo 
Date:   Sun Apr 7 12:28:55 2024 +0200

jtag: linuxgpiod: minor alignment to coding style

Avoid double TAB in 'then' block by increasing indentation of the
multi-line condition.

Change-Id: I7f5a4437fe4f74228f1b0d98e5c5921af4fd36b8
Signed-off-by: Antonio Borneo 

diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c
index 2f3d644542..1926ed9ae6 100644
--- a/src/jtag/drivers/linuxgpiod.c
+++ b/src/jtag/drivers/linuxgpiod.c
@@ -378,12 +378,12 @@ static int linuxgpiod_init(void)
goto out_error;
}
 
-   if (helper_get_line(ADAPTER_GPIO_IDX_TDO) != ERROR_OK ||
-   helper_get_line(ADAPTER_GPIO_IDX_TDI) != ERROR_OK ||
-   helper_get_line(ADAPTER_GPIO_IDX_TCK) != ERROR_OK ||
-   helper_get_line(ADAPTER_GPIO_IDX_TMS) != ERROR_OK ||
-   helper_get_line(ADAPTER_GPIO_IDX_TRST) != ERROR_OK)
-   goto out_error;
+   if (helper_get_line(ADAPTER_GPIO_IDX_TDO) != ERROR_OK
+   || helper_get_line(ADAPTER_GPIO_IDX_TDI) != 
ERROR_OK
+   || helper_get_line(ADAPTER_GPIO_IDX_TCK) != 
ERROR_OK
+   || helper_get_line(ADAPTER_GPIO_IDX_TMS) != 
ERROR_OK
+   || helper_get_line(ADAPTER_GPIO_IDX_TRST) != 
ERROR_OK)
+   goto out_error;
}
 
if (transport_is_swd()) {
@@ -413,9 +413,9 @@ static int linuxgpiod_init(void)
goto out_error;
}
 
-   if (helper_get_line(ADAPTER_GPIO_IDX_SRST) != ERROR_OK ||
-   helper_get_line(ADAPTER_GPIO_IDX_LED) != ERROR_OK)
-   goto out_error;
+   if (helper_get_line(ADAPTER_GPIO_IDX_SRST) != ERROR_OK
+   || helper_get_line(ADAPTER_GPIO_IDX_LED) != ERROR_OK)
+   goto out_error;
 
return ERROR_OK;
 

--