From 42c936567256798113354679544c3485748c80eb Mon Sep 17 00:00:00 2001 From: mcc45tr Date: Sat, 5 Sep 2026 10:17:42 +0300 Subject: [PATCH] Input: nabu: arm keyboard wake only while attached --- drivers/input/misc/xiaomi-nabu-keyboard.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/input/misc/xiaomi-nabu-keyboard.c b/drivers/input/misc/xiaomi-nabu-keyboard.c index d932443e3aaa..eaac797dbbda 100644 --- a/drivers/input/misc/xiaomi-nabu-keyboard.c +++ b/drivers/input/misc/xiaomi-nabu-keyboard.c @@ -249,10 +249,14 @@ static void nabu_keyboard_remove(struct platform_device *pdev) static int nabu_keyboard_suspend(struct device *dev) { struct nabu_keyboard *keyboard = dev_get_drvdata(dev); + bool connected; int ret; cancel_delayed_work_sync(&keyboard->detect_work); - if (!device_may_wakeup(dev)) + mutex_lock(&keyboard->lock); + connected = keyboard->connected; + mutex_unlock(&keyboard->lock); + if (!device_may_wakeup(dev) || !connected) return 0; ret = enable_irq_wake(keyboard->irq); @@ -269,7 +273,7 @@ static int nabu_keyboard_resume(struct device *dev) disable_irq_wake(keyboard->irq); WRITE_ONCE(keyboard->wake_enabled, false); } - mod_delayed_work(system_wq, &keyboard->detect_work, + mod_delayed_work(system_percpu_wq, &keyboard->detect_work, msecs_to_jiffies(NABU_KEYBOARD_DEBOUNCE_MS)); return 0; } -- 2.55.0