56 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * GPIO character device helper for reading line names.4 *5 * Copyright (C) 2021 Bartosz Golaszewski <brgl@bgdev.pl>6 */7 8#include <fcntl.h>9#include <linux/gpio.h>10#include <stdio.h>11#include <stdlib.h>12#include <string.h>13#include <sys/ioctl.h>14#include <sys/types.h>15 16static void print_usage(void)17{18 printf("usage:\n");19 printf(" gpio-line-name <chip path> <line offset>\n");20}21 22int main(int argc, char **argv)23{24 struct gpio_v2_line_info info;25 int fd, ret;26 char *endp;27 28 if (argc != 3) {29 print_usage();30 return EXIT_FAILURE;31 }32 33 fd = open(argv[1], O_RDWR);34 if (fd < 0) {35 perror("unable to open the GPIO chip");36 return EXIT_FAILURE;37 }38 39 memset(&info, 0, sizeof(info));40 info.offset = strtoul(argv[2], &endp, 10);41 if (*endp != '\0') {42 print_usage();43 return EXIT_FAILURE;44 }45 46 ret = ioctl(fd, GPIO_V2_GET_LINEINFO_IOCTL, &info);47 if (ret) {48 perror("line info ioctl failed");49 return EXIT_FAILURE;50 }51 52 printf("%s\n", info.name);53 54 return EXIT_SUCCESS;55}56