Linus Walleij | 3c702e9 | 2015-10-21 15:29:53 +0200 | [diff] [blame] | 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 name of this GPIO chip |
Linus Walleij | df4878e | 2016-02-12 14:48:23 +0100 | [diff] [blame] | 19 | * @label: a functional name for this GPIO chip |
Linus Walleij | 3c702e9 | 2015-10-21 15:29:53 +0200 | [diff] [blame] | 20 | * @lines: number of GPIO lines on this chip |
| 21 | */ |
| 22 | struct gpiochip_info { |
| 23 | char name[32]; |
Linus Walleij | df4878e | 2016-02-12 14:48:23 +0100 | [diff] [blame] | 24 | char label[32]; |
Linus Walleij | 3c702e9 | 2015-10-21 15:29:53 +0200 | [diff] [blame] | 25 | __u32 lines; |
| 26 | }; |
| 27 | |
Linus Walleij | 521a2ad | 2016-02-12 22:25:22 +0100 | [diff] [blame^] | 28 | /* Line is in use by the kernel */ |
| 29 | #define GPIOLINE_FLAG_KERNEL (1UL << 0) |
| 30 | #define GPIOLINE_FLAG_IS_OUT (1UL << 1) |
| 31 | #define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2) |
| 32 | #define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3) |
| 33 | #define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4) |
| 34 | |
| 35 | /** |
| 36 | * struct gpioline_info - Information about a certain GPIO line |
| 37 | * @line_offset: the local offset on this GPIO device, fill in when |
| 38 | * requesting information from the kernel |
| 39 | * @flags: various flags for this line |
| 40 | * @name: the name of this GPIO line |
| 41 | * @label: a functional name for this GPIO line |
| 42 | * @kernel: this GPIO is in use by the kernel |
| 43 | * @out: this GPIO is an output line (false means it is an input) |
| 44 | * @active_low: this GPIO is active low |
| 45 | */ |
| 46 | struct gpioline_info { |
| 47 | __u32 line_offset; |
| 48 | __u32 flags; |
| 49 | char name[32]; |
| 50 | char label[32]; |
| 51 | }; |
| 52 | |
Linus Walleij | 3c702e9 | 2015-10-21 15:29:53 +0200 | [diff] [blame] | 53 | #define GPIO_GET_CHIPINFO_IOCTL _IOR('o', 0x01, struct gpiochip_info) |
Linus Walleij | 521a2ad | 2016-02-12 22:25:22 +0100 | [diff] [blame^] | 54 | #define GPIO_GET_LINEINFO_IOCTL _IOWR('o', 0x02, struct gpioline_info) |
Linus Walleij | 3c702e9 | 2015-10-21 15:29:53 +0200 | [diff] [blame] | 55 | |
| 56 | #endif /* _UAPI_GPIO_H_ */ |