Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/gpio/gpio-chip-info.c
26285 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
* GPIO character device helper for reading chip information.
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-chip-info <chip path> [name|label|num-lines]\n");
20
}
21
22
int main(int argc, char **argv)
23
{
24
struct gpiochip_info info;
25
int fd, ret;
26
27
if (argc != 3) {
28
print_usage();
29
return EXIT_FAILURE;
30
}
31
32
fd = open(argv[1], O_RDWR);
33
if (fd < 0) {
34
perror("unable to open the GPIO chip");
35
return EXIT_FAILURE;
36
}
37
38
memset(&info, 0, sizeof(info));
39
ret = ioctl(fd, GPIO_GET_CHIPINFO_IOCTL, &info);
40
if (ret) {
41
perror("chip info ioctl failed");
42
return EXIT_FAILURE;
43
}
44
45
if (strcmp(argv[2], "name") == 0) {
46
printf("%s\n", info.name);
47
} else if (strcmp(argv[2], "label") == 0) {
48
printf("%s\n", info.label);
49
} else if (strcmp(argv[2], "num-lines") == 0) {
50
printf("%u\n", info.lines);
51
} else {
52
fprintf(stderr, "unknown command: %s\n", argv[2]);
53
return EXIT_FAILURE;
54
}
55
56
return EXIT_SUCCESS;
57
}
58
59