brintos

brintos / linux-shallow public Read only

0
0
Text · 1.2 KiB · fdc07e7 Raw
58 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * GPIO character device helper for reading chip information.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-chip-info <chip path> [name|label|num-lines]\n");20}21 22int 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