mirror of https://github.com/hak5/openwrt.git
gpio-button-hotplug: gpio-keys: fix always missing first event
Commitopenwrt-19.07afc056d7dc
("gpio-button-hotplug: support interrupt properties") changed the gpio-keys interrupt handling logic in a way, that it always misses first event, which causes issues with rc.button scripts, so this patch restores the previous behaviour. Fixes:afc056d7dc
("gpio-button-hotplug: support interrupt properties") Reported-by: Kristian Evensen <kristian.evensen@gmail.com> Tested-by: Kuan-Yi Li <kyli.tw@gmail.com> Signed-off-by: Petr Štetiar <ynezz@true.cz> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [drop state check]
parent
27d234a345
commit
6c5bfaac84
|
@ -340,16 +340,9 @@ static void gpio_keys_irq_work_func(struct work_struct *work)
|
|||
{
|
||||
struct gpio_keys_button_data *bdata = container_of(work,
|
||||
struct gpio_keys_button_data, work.work);
|
||||
int state = gpio_button_get_value(bdata);
|
||||
|
||||
if (state != bdata->last_state) {
|
||||
unsigned int type = bdata->b->type ?: EV_KEY;
|
||||
|
||||
if (bdata->last_state != -1 || type == EV_SW)
|
||||
button_hotplug_event(bdata, type, state);
|
||||
|
||||
bdata->last_state = state;
|
||||
}
|
||||
button_hotplug_event(bdata, bdata->b->type ?: EV_KEY,
|
||||
gpio_button_get_value(bdata));
|
||||
}
|
||||
|
||||
static irqreturn_t button_handle_irq(int irq, void *_bdata)
|
||||
|
|
Loading…
Reference in New Issue