Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
[cascardo/linux.git] / include / uapi / linux / gpio.h
1 /*
2  * <linux/gpio.h> - userspace ABI for the GPIO character devices
3  *
4  * Copyright (C) 2015 Linus Walleij
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License version 2 as published by
8  * the Free Software Foundation.
9  */
10 #ifndef _UAPI_GPIO_H_
11 #define _UAPI_GPIO_H_
12
13 #include <linux/ioctl.h>
14 #include <linux/types.h>
15
16 /**
17  * struct gpiochip_info - Information about a certain GPIO chip
18  * @name: the Linux kernel name of this GPIO chip
19  * @label: a functional name for this GPIO chip, such as a product
20  * number, may be NULL
21  * @lines: number of GPIO lines on this chip
22  */
23 struct gpiochip_info {
24         char name[32];
25         char label[32];
26         __u32 lines;
27 };
28
29 /* Line is in use by the kernel */
30 #define GPIOLINE_FLAG_KERNEL            (1UL << 0)
31 #define GPIOLINE_FLAG_IS_OUT            (1UL << 1)
32 #define GPIOLINE_FLAG_ACTIVE_LOW        (1UL << 2)
33 #define GPIOLINE_FLAG_OPEN_DRAIN        (1UL << 3)
34 #define GPIOLINE_FLAG_OPEN_SOURCE       (1UL << 4)
35
36 /**
37  * struct gpioline_info - Information about a certain GPIO line
38  * @line_offset: the local offset on this GPIO device, fill this in when
39  * requesting the line information from the kernel
40  * @flags: various flags for this line
41  * @name: the name of this GPIO line, such as the output pin of the line on the
42  * chip, a rail or a pin header name on a board, as specified by the gpio
43  * chip, may be NULL
44  * @consumer: a functional name for the consumer of this GPIO line as set by
45  * whatever is using it, will be NULL if there is no current user but may
46  * also be NULL if the consumer doesn't set this up
47  */
48 struct gpioline_info {
49         __u32 line_offset;
50         __u32 flags;
51         char name[32];
52         char consumer[32];
53 };
54
55 #define GPIO_GET_CHIPINFO_IOCTL _IOR(0xB4, 0x01, struct gpiochip_info)
56 #define GPIO_GET_LINEINFO_IOCTL _IOWR(0xB4, 0x02, struct gpioline_info)
57
58 #endif /* _UAPI_GPIO_H_ */