mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 04:56:43 +07:00
d8ee4a1c90
Some of buttons, like power-on key or onkey, may only generate interrupts when pressed and not actually be mapped as gpio in the system. Allow setting gpio to invalid value and specify IRQ instead to support such keys. The debounce timer is used not to debounce but to ignore new IRQs coming while button is kept pressed. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
32 lines
952 B
C
32 lines
952 B
C
#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 */
|
|
};
|
|
|
|
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 */
|
|
};
|
|
|
|
#endif
|