line_names_to_offsets to be used by tools that support --by-name. Signed-off-by: Joel Stanley <joel@xxxxxxxxx> --- tools/tools-common.c | 22 ++++++++++++++++++++++ tools/tools-common.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/tools/tools-common.c b/tools/tools-common.c index c83e68a2c1e4..958933ed6d51 100644 --- a/tools/tools-common.c +++ b/tools/tools-common.c @@ -204,3 +204,25 @@ struct gpiod_chip *chip_by_line_name(const char *name) return NULL; } +int line_names_to_offsets(struct gpiod_chip *chip, char **lines, + unsigned int *offsets, int num_lines) +{ + int i; + + for (i = 0; i < num_lines; i++) { + const char *line_name = lines[i]; + int offset; + + offset = gpiod_chip_find_line(chip, line_name); + + if (offset < 0) { + die("chip '%s' does not contain line '%s'", + gpiod_chip_get_name(chip), + line_name); + } + + offsets[i] = offset; + } + + return 0; +} diff --git a/tools/tools-common.h b/tools/tools-common.h index 5ed37dc05885..7affea436a60 100644 --- a/tools/tools-common.h +++ b/tools/tools-common.h @@ -32,5 +32,7 @@ int chip_dir_filter(const struct dirent *entry); struct gpiod_chip *chip_open_by_name(const char *name); struct gpiod_chip *chip_open_lookup(const char *device); struct gpiod_chip *chip_by_line_name(const char *name); +int line_names_to_offsets(struct gpiod_chip *chip, char **lines, + unsigned int *offsets, int num_lines); #endif /* __GPIOD_TOOLS_COMMON_H__ */ -- 2.34.1