blob: d02ba7b922d3f0a291901f41c58e6efa31689342 [file] [log] [blame]
#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