aboutsummaryrefslogtreecommitdiff
path: root/include/linux/gpio_keys.h
blob: d02ba7b922d3f0a291901f41c58e6efa31689342 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef _GPIO_KEYS_H
#define _GPIO_KEYS_H

struct device;

struct gpio_keys_button {
	/* Configuration parameters */
	unsigned int code;	/* input event code (KEY_*, SW_*) */
	int gpio;		/* -1 if this key does not support gpio */
	int active_low;
	const char *desc;
	unsigned int type;	/* input event type (EV_KEY, EV_SW, EV_ABS) */
	int wakeup;		/* configure the button as a wake-up source */
	int debounce_interval;	/* debounce ticks interval in msecs */
	bool can_disable;
	int value;		/* axis value for EV_ABS */
	unsigned int irq;	/* Irq number in case of interrupt keys */
	bool can_reset;		/* key is able to reset system */
	int reset_interval;	/* reset key interval in msec */
};

struct gpio_keys_platform_data {
	struct gpio_keys_button *buttons;
	int nbuttons;
	unsigned int poll_interval;	/* polling interval in msecs -
					   for polling driver only */
	unsigned int rep:1;		/* enable input subsystem auto repeat */
	int (*enable)(struct device *dev);
	void (*disable)(struct device *dev);
	const char *name;		/* input device name */
};


#define RESETKEY_PRESS			0x0001 /* power key is pressed */
#define RESETKEY_RELEASE		0x0002 /* power key is released */
#define RESETKEY_PREPARE_HWREST		0x0003 /* Going to reset whole system by pmic*/

extern int register_resetkey_notifier(struct notifier_block *nb);
extern int unregister_resetkey_notifier(struct notifier_block *nb);

#endif