#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