aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/gpio-button-hotplug
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2019-06-04 13:14:41 +0200
committerPetr Štetiar <ynezz@true.cz>2019-06-09 14:51:47 +0200
commit6c5bfaac84b085df813cf4e620981b94fa2a77cd (patch)
treec5b988bdf0979467361e908cd4c351c5104d97b1 /package/kernel/gpio-button-hotplug
parent27d234a345669f0459fc3db54e618c80b20b7998 (diff)
downloadupstream-6c5bfaac84b085df813cf4e620981b94fa2a77cd.tar.gz
upstream-6c5bfaac84b085df813cf4e620981b94fa2a77cd.tar.bz2
upstream-6c5bfaac84b085df813cf4e620981b94fa2a77cd.zip
gpio-button-hotplug: gpio-keys: fix always missing first event
Commit afc056d7dc83 ("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: afc056d7dc83 ("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]
Diffstat (limited to 'package/kernel/gpio-button-hotplug')
-rw-r--r--package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c b/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c
index f429f8c027..daa4b2a4f7 100644
--- a/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c
+++ b/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c
@@ -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)