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 | * @wakeirq: Optional dedicated wake-up interrupt |
25 | */ |
26 | struct gpio_keys_button { |
27 | unsigned int code; |
28 | int gpio; |
29 | int active_low; |
30 | const char *desc; |
31 | unsigned int type; |
32 | int wakeup; |
33 | int wakeup_event_action; |
34 | int debounce_interval; |
35 | bool can_disable; |
36 | int value; |
37 | unsigned int irq; |
38 | unsigned int wakeirq; |
39 | }; |
40 | |
41 | /** |
42 | * struct gpio_keys_platform_data - platform data for gpio_keys driver |
43 | * @buttons: pointer to array of &gpio_keys_button structures |
44 | * describing buttons attached to the device |
45 | * @nbuttons: number of elements in @buttons array |
46 | * @poll_interval: polling interval in msecs - for polling driver only |
47 | * @rep: enable input subsystem auto repeat |
48 | * @enable: platform hook for enabling the device |
49 | * @disable: platform hook for disabling the device |
50 | * @name: input device name |
51 | */ |
52 | struct gpio_keys_platform_data { |
53 | const struct gpio_keys_button *buttons; |
54 | int nbuttons; |
55 | unsigned int poll_interval; |
56 | unsigned int rep:1; |
57 | int (*enable)(struct device *dev); |
58 | void (*disable)(struct device *dev); |
59 | const char *name; |
60 | }; |
61 | |
62 | #endif |
63 | |