diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2022-06-13 15:56:14 +0200 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2022-06-24 21:50:19 +0000 |
commit | eab88eadd7b828f9c07007a8ac91988c37b5d036 (patch) | |
tree | 1caf8b186a3d2f86bedfb4626aed36b78db80207 /src | |
parent | 1a3573d73194a334d2737554538b51eff649e1a8 (diff) | |
download | riscv-openocd-eab88eadd7b828f9c07007a8ac91988c37b5d036.zip riscv-openocd-eab88eadd7b828f9c07007a8ac91988c37b5d036.tar.gz riscv-openocd-eab88eadd7b828f9c07007a8ac91988c37b5d036.tar.bz2 |
drivers/linuxgpiod: simplify gpio release
We already have a helper to release the gpio.
Extend it to also release its corresponding gpio chip.
As side effect, remove comparison with NULL.
Change-Id: I47cd446edfaead662d63c3330f25a791b747e882
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7033
Tested-by: jenkins
Reviewed-by: Steve Marple <stevemarple@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/drivers/linuxgpiod.c | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/src/jtag/drivers/linuxgpiod.c b/src/jtag/drivers/linuxgpiod.c index 70fb555..0e96d82 100644 --- a/src/jtag/drivers/linuxgpiod.c +++ b/src/jtag/drivers/linuxgpiod.c @@ -288,45 +288,26 @@ static bool linuxgpiod_swd_mode_possible(void) return true; } -static inline void helper_release(struct gpiod_line *line) +static inline void helper_release(struct gpiod_line *line, struct gpiod_chip *chip) { if (line) gpiod_line_release(line); + if (chip) + gpiod_chip_close(chip); } static int linuxgpiod_quit(void) { - helper_release(gpiod_led); - helper_release(gpiod_srst); - helper_release(gpiod_swdio); - helper_release(gpiod_swdio_dir); - helper_release(gpiod_swclk); - helper_release(gpiod_trst); - helper_release(gpiod_tms); - helper_release(gpiod_tck); - helper_release(gpiod_tdi); - helper_release(gpiod_tdo); - - if (gpiod_chip_led != NULL) - gpiod_chip_close(gpiod_chip_led); - if (gpiod_chip_srst != NULL) - gpiod_chip_close(gpiod_chip_srst); - if (gpiod_chip_swdio != NULL) - gpiod_chip_close(gpiod_chip_swdio); - if (gpiod_chip_swdio_dir != NULL) - gpiod_chip_close(gpiod_chip_swdio_dir); - if (gpiod_chip_swclk != NULL) - gpiod_chip_close(gpiod_chip_swclk); - if (gpiod_chip_trst != NULL) - gpiod_chip_close(gpiod_chip_trst); - if (gpiod_chip_tms != NULL) - gpiod_chip_close(gpiod_chip_tms); - if (gpiod_chip_tck != NULL) - gpiod_chip_close(gpiod_chip_tck); - if (gpiod_chip_tdi != NULL) - gpiod_chip_close(gpiod_chip_tdi); - if (gpiod_chip_tdo != NULL) - gpiod_chip_close(gpiod_chip_tdo); + helper_release(gpiod_led, gpiod_chip_led); + helper_release(gpiod_srst, gpiod_chip_srst); + helper_release(gpiod_swdio, gpiod_chip_swdio); + helper_release(gpiod_swdio_dir, gpiod_chip_swdio_dir); + helper_release(gpiod_swclk, gpiod_chip_swclk); + helper_release(gpiod_trst, gpiod_chip_trst); + helper_release(gpiod_tms, gpiod_chip_tms); + helper_release(gpiod_tck, gpiod_chip_tck); + helper_release(gpiod_tdi, gpiod_chip_tdi); + helper_release(gpiod_tdo, gpiod_chip_tdo); return ERROR_OK; } |