mirror of
https://github.com/avrdudes/avrdude.git
synced 2026-09-22 09:06:23 +03:00
linuxgpio: fix build with libgpiod < v2.0
Commit 83909096b8 introduced a regression with
libgpiod versions below 2.0.
Fix it by introducing a tiny helper function which returns
the GPIO number (offset).
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
This commit is contained in:
@@ -506,6 +506,14 @@ static inline int gpiod_line_get_value(struct gpiod_line *gpio_line) {
|
||||
|
||||
#endif
|
||||
|
||||
static inline unsigned int linuxgpio_get_gpio_num(struct gpiod_line *gpio_line) {
|
||||
#if HAVE_LIBGPIOD_V2
|
||||
return gpio_line->gpio_num;
|
||||
#else
|
||||
return gpiod_line_offset(gpio_line);
|
||||
#endif
|
||||
}
|
||||
|
||||
struct gpiod_line * linuxgpio_libgpiod_lines[N_PINS];
|
||||
|
||||
// Try to tell if libgpiod is going to work.
|
||||
@@ -588,7 +596,7 @@ static void linuxgpio_libgpiod_close(PROGRAMMER *pgm) {
|
||||
#endif
|
||||
if (r != 0) {
|
||||
msg_error("failed to set pin %u to input: %s\n",
|
||||
linuxgpio_libgpiod_lines[i]->gpio_num, strerror(errno));
|
||||
linuxgpio_get_gpio_num(linuxgpio_libgpiod_lines[i]), strerror(errno));
|
||||
}
|
||||
gpiod_line_release(linuxgpio_libgpiod_lines[i]);
|
||||
linuxgpio_libgpiod_lines[i] = NULL;
|
||||
@@ -604,7 +612,7 @@ static void linuxgpio_libgpiod_close(PROGRAMMER *pgm) {
|
||||
#endif
|
||||
if (r != 0) {
|
||||
msg_error("failed to set pin %u to input: %s\n",
|
||||
linuxgpio_libgpiod_lines[PIN_AVR_RESET]->gpio_num, strerror(errno));
|
||||
linuxgpio_get_gpio_num(linuxgpio_libgpiod_lines[PIN_AVR_RESET]), strerror(errno));
|
||||
}
|
||||
gpiod_line_release(linuxgpio_libgpiod_lines[PIN_AVR_RESET]);
|
||||
linuxgpio_libgpiod_lines[PIN_AVR_RESET] = NULL;
|
||||
@@ -630,7 +638,7 @@ static int linuxgpio_libgpiod_setpin(const PROGRAMMER *pgm, int pinfunc, int val
|
||||
int r = gpiod_line_set_value(linuxgpio_libgpiod_lines[pinfunc], value);
|
||||
if (r != 0) {
|
||||
msg_error("failed to set value of %s (%u) to %d: %s\n", avr_pin_name(pinfunc),
|
||||
linuxgpio_libgpiod_lines[pinfunc]->gpio_num, value, strerror(errno));
|
||||
linuxgpio_get_gpio_num(linuxgpio_libgpiod_lines[pinfunc]), value, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -656,7 +664,7 @@ static int linuxgpio_libgpiod_getpin(const PROGRAMMER *pgm, int pinfunc) {
|
||||
|
||||
int r = gpiod_line_get_value(linuxgpio_libgpiod_lines[pinfunc]);
|
||||
if (r == -1) {
|
||||
msg_error("failed to read %u: %s\n", linuxgpio_libgpiod_lines[pinfunc]->gpio_num, strerror(errno));
|
||||
msg_error("failed to read %u: %s\n", linuxgpio_get_gpio_num(linuxgpio_libgpiod_lines[pinfunc]), strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user