All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mario Limonciello <superm1@kernel.org>
To: Hans de Goede <hansg@kernel.org>,
	Mika Westerberg <westeri@kernel.org>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: linux-gpio@vger.kernel.org (open list:GPIO ACPI SUPPORT),
	linux-acpi@vger.kernel.org (open list:GPIO ACPI SUPPORT),
	linux-kernel@vger.kernel.org (open list),
	linux-input@vger.kernel.org (open list:INPUT (KEYBOARD, MOUSE,
	JOYSTICK, TOUCHSCREEN)...),
	Mario Limonciello <mario.limonciello@amd.com>
Subject: [PATCH v3 3/4] Input: Don't program hw debounce for soc_button_array devices
Date: Wed, 25 Jun 2025 16:58:12 -0500	[thread overview]
Message-ID: <20250625215813.3477840-4-superm1@kernel.org> (raw)
In-Reply-To: <20250625215813.3477840-1-superm1@kernel.org>

From: Mario Limonciello <mario.limonciello@amd.com>

Programming a hardware debounce of 50ms causes problems where a button
doesn't work properly anymore on some systems.  This debounce is intended
for compatibility with systems with a mechanical switch so soc_button_array
devices should only be using a sofware debounce.

Add support for indicating that a driver is only requesting gpio_keys
to use software debounce support and mark that in soc_button_array
accordingly.

Suggested-by: Hans de Goede <hansg@kernel.org>
Fixes: 5c4fa2a6da7fb ("Input: soc_button_array - debounce the buttons")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/input/keyboard/gpio_keys.c    | 7 +++++--
 drivers/input/misc/soc_button_array.c | 1 +
 include/linux/gpio_keys.h             | 2 ++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c
index f9db86da0818b..773aa5294d269 100644
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -552,8 +552,11 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
 		bool active_low = gpiod_is_active_low(bdata->gpiod);
 
 		if (button->debounce_interval) {
-			error = gpiod_set_debounce(bdata->gpiod,
-					button->debounce_interval * 1000);
+			if (ddata->pdata->no_hw_debounce)
+				error = -EINVAL;
+			else
+				error = gpiod_set_debounce(bdata->gpiod,
+							   button->debounce_interval * 1000);
 			/* use timer if gpiolib doesn't provide debounce */
 			if (error < 0)
 				bdata->software_debounce =
diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
index b8cad415c62ca..dac940455bea8 100644
--- a/drivers/input/misc/soc_button_array.c
+++ b/drivers/input/misc/soc_button_array.c
@@ -232,6 +232,7 @@ soc_button_device_create(struct platform_device *pdev,
 	gpio_keys_pdata->buttons = gpio_keys;
 	gpio_keys_pdata->nbuttons = n_buttons;
 	gpio_keys_pdata->rep = autorepeat;
+	gpio_keys_pdata->no_hw_debounce = TRUE;
 
 	pd = platform_device_register_resndata(&pdev->dev, "gpio-keys",
 					       PLATFORM_DEVID_AUTO, NULL, 0,
diff --git a/include/linux/gpio_keys.h b/include/linux/gpio_keys.h
index 80fa930b04c67..c99f74467fda6 100644
--- a/include/linux/gpio_keys.h
+++ b/include/linux/gpio_keys.h
@@ -48,6 +48,7 @@ struct gpio_keys_button {
  * @enable:		platform hook for enabling the device
  * @disable:		platform hook for disabling the device
  * @name:		input device name
+ * @no_hw_debounce:	avoid programming hardware debounce
  */
 struct gpio_keys_platform_data {
 	const struct gpio_keys_button *buttons;
@@ -57,6 +58,7 @@ struct gpio_keys_platform_data {
 	int (*enable)(struct device *dev);
 	void (*disable)(struct device *dev);
 	const char *name;
+	bool no_hw_debounce;
 };
 
 #endif
-- 
2.43.0


  parent reply	other threads:[~2025-06-25 21:58 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-25 21:58 [PATCH v3 0/4] Fix soc-button-array debounce Mario Limonciello
2025-06-25 21:58 ` [PATCH v3 1/4] gpiolib: acpi: Add a helper for programming debounce Mario Limonciello
2025-06-26 14:29   ` Andy Shevchenko
2025-06-26 16:04     ` Mario Limonciello
2025-06-25 21:58 ` [PATCH v3 2/4] gpiolib: acpi: Program debounce when finding GPIO Mario Limonciello
2025-06-26 14:31   ` Andy Shevchenko
2025-06-25 21:58 ` Mario Limonciello [this message]
2025-06-26  8:27   ` [PATCH v3 3/4] Input: Don't program hw debounce for soc_button_array devices Hans de Goede
2025-06-26 14:33   ` Andy Shevchenko
2025-06-25 21:58 ` [PATCH v3 4/4] Input: Don't send fake button presses to wake system Mario Limonciello
2025-06-26  8:35   ` Hans de Goede
2025-06-26 11:33     ` Mario Limonciello
2025-06-26 17:44       ` Dmitry Torokhov
2025-06-26 17:53         ` Mario Limonciello
2025-06-26 18:07           ` Dmitry Torokhov
2025-06-26 18:20             ` Mario Limonciello
2025-06-26 18:48               ` Dmitry Torokhov
2025-06-26 18:55                 ` Mario Limonciello
2025-06-26 19:06                   ` Dmitry Torokhov
2025-06-26 19:37                   ` Andy Shevchenko
2025-06-26 18:57                 ` Hans de Goede
2025-06-26 19:14                   ` Dmitry Torokhov
2025-06-26 19:16                     ` Hans de Goede
2025-06-26 19:18                       ` Rafael J. Wysocki
2025-06-26 19:28                         ` Dmitry Torokhov
2025-06-26 19:31                           ` Rafael J. Wysocki
2025-06-26 19:40                             ` Dmitry Torokhov
2025-06-26 22:21                               ` Mario Limonciello
2025-06-27  4:56                                 ` Dmitry Torokhov
2025-06-27 14:06                                   ` Mario Limonciello
2025-06-27 14:14                                     ` Hans de Goede
2025-06-27 14:44                                       ` Dmitry Torokhov
2025-06-27 15:56                                         ` Hans de Goede
2025-06-27 16:12                                           ` Andy Shevchenko
2025-06-27 17:59                                             ` Hans de Goede
2025-06-27 18:47                                               ` Dmitry Torokhov
2025-06-27 18:36                                           ` Dmitry Torokhov
2025-06-27 18:56                                             ` Mario Limonciello
2025-06-27 19:18                                               ` Dmitry Torokhov
2025-06-27 19:38                                                 ` Hans de Goede
2025-06-27 19:44                                                   ` Mario Limonciello
2025-06-27 20:25                                                     ` Hans de Goede
2025-06-27 20:29                                                       ` Mario Limonciello
2025-06-27 19:45                                                 ` Mario Limonciello
2025-06-27 10:36                               ` Rafael J. Wysocki
2025-06-26 19:28                         ` Rafael J. Wysocki
2025-06-26 18:37       ` Hans de Goede
2025-06-26 18:42         ` Mario Limonciello
2025-06-26 18:45           ` Hans de Goede
2025-06-26 18:47             ` Mario Limonciello
2025-06-26 14:37   ` Andy Shevchenko
2025-06-26 14:35 ` [PATCH v3 0/4] Fix soc-button-array debounce Andy Shevchenko
2025-06-26 15:59   ` Mario Limonciello

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250625215813.3477840-4-superm1@kernel.org \
    --to=superm1@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=brgl@bgdev.pl \
    --cc=dmitry.torokhov@gmail.com \
    --cc=hansg@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --cc=westeri@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.