Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/gpio/gpio-line-name.c
26285 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
* GPIO character device helper for reading line names.
4
*
5
* Copyright (C) 2021 Bartosz Golaszewski <[email protected]>
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
16
static void print_usage(void)
17
{
18
printf("usage:\n");
19
printf(" gpio-line-name <chip path> <line offset>\n");
20
}
21
22
int 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
57