فهرست منبع

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 <[email protected]>
Tested-by: Kuan-Yi Li <[email protected]>
Signed-off-by: Petr Štetiar <[email protected]>
Signed-off-by: Christian Lamparter <[email protected]> [drop state check]
Petr Štetiar 6 سال پیش
والد
کامیت
6c5bfaac84
1فایلهای تغییر یافته به همراه2 افزوده شده و 9 حذف شده
  1. 2 9
      package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c

+ 2 - 9
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)