1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _GPIO_KEYS_H |
3 | #define _GPIO_KEYS_H |
4 | |
5 | #include <linux/types.h> |
6 | |
7 | struct device; |
8 | |
9 | /** |
10 | * struct gpio_keys_button - configuration parameters |
11 | * @code: input event code (KEY_*, SW_*) |
12 | * @gpio: %-1 if this key does not support gpio |
13 | * @active_low: %true indicates that button is considered |
14 | * depressed when gpio is low |
15 | * @desc: label that will be attached to button's gpio |
16 | * @type: input event type (%EV_KEY, %EV_SW, %EV_ABS) |
17 | * @wakeup: configure the button as a wake-up source |
18 | * @wakeup_event_action: event action to trigger wakeup |
19 | * @debounce_interval: debounce ticks interval in msecs |
20 | * @can_disable: %true indicates that userspace is allowed to |
21 | * disable button via sysfs |
22 | * @value: axis value for %EV_ABS |
23 | * @irq: Irq number in case of interrupt keys |
24 | */ |
25 | struct gpio_keys_button { |
26 | unsigned int code; |
27 | int gpio; |
28 | int active_low; |
29 | const char *desc; |
30 | unsigned int type; |
31 | int wakeup; |
32 | int wakeup_event_action; |
33 | int debounce_interval; |
34 | bool can_disable; |
35 | int value; |
36 | unsigned int irq; |
37 | }; |
38 | |
39 | /** |
40 | * struct gpio_keys_platform_data - platform data for gpio_keys driver |
41 | * @buttons: pointer to array of &gpio_keys_button structures |
42 | * describing buttons attached to the device |
43 | * @nbuttons: number of elements in @buttons array |
44 | * @poll_interval: polling interval in msecs - for polling driver only |
45 | * @rep: enable input subsystem auto repeat |
46 | * @enable: platform hook for enabling the device |
47 | * @disable: platform hook for disabling the device |
48 | * @name: input device name |
49 | */ |
50 | struct gpio_keys_platform_data { |
51 | const struct gpio_keys_button *buttons; |
52 | int nbuttons; |
53 | unsigned int poll_interval; |
54 | unsigned int rep:1; |
55 | int (*enable)(struct device *dev); |
56 | void (*disable)(struct device *dev); |
57 | const char *name; |
58 | }; |
59 | |
60 | #endif |
61 | |