diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2024-02-21 15:28:00 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2024-02-23 08:28:39 +0100 |
commit | b01bba2f2beac5312206b84b879a0ec3c277e7fb (patch) | |
tree | 7ad6a92f9468cf455054549af47b3eeeb66a14dd | |
parent | ff5e5b69d643793a711ca4a85d3bf97c448817a1 (diff) | |
download | barebox-b01bba2f2beac5312206b84b879a0ec3c277e7fb.tar.gz barebox-b01bba2f2beac5312206b84b879a0ec3c277e7fb.tar.xz |
input: gpio_keys: only use gpios in poller when not in use
Before reading GPIOs in a poller check if they are available.
Link: https://lore.barebox.org/20240221142800.1958810-5-s.hauer@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/input/gpio_keys.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/input/gpio_keys.c b/drivers/input/gpio_keys.c index fd3995d01f..c23d20563c 100644 --- a/drivers/input/gpio_keys.c +++ b/drivers/input/gpio_keys.c @@ -41,6 +41,13 @@ static void gpio_key_poller(void *data) int i, val; for (i = 0; i < gk->nbuttons; i++) { + gb = &gk->buttons[i]; + + if (gpio_slice_acquired(gb->gpio)) + goto out; + } + + for (i = 0; i < gk->nbuttons; i++) { gb = &gk->buttons[i]; val = gpio_get_value(gb->gpio); @@ -58,7 +65,7 @@ static void gpio_key_poller(void *data) gb->previous_state = val; } } - +out: poller_call_async(&gk->poller, 10 * MSECOND, gpio_key_poller, gk); } |