hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/input/keyboard/gpio_keys.c
....@@ -28,6 +28,7 @@
2828 #include <linux/of_irq.h>
2929 #include <linux/spinlock.h>
3030 #include <dt-bindings/input/gpio-keys.h>
31
+#include <trace/hooks/wakeupbypass.h>
3132
3233 struct gpio_button_data {
3334 const struct gpio_keys_button *button;
....@@ -958,11 +959,16 @@
958959 struct gpio_keys_drvdata *ddata = dev_get_drvdata(dev);
959960 struct input_dev *input = ddata->input;
960961 int error;
962
+ int wakeup_bypass_enabled = 0;
963
+
964
+ trace_android_vh_wakeup_bypass(&wakeup_bypass_enabled);
961965
962966 if (device_may_wakeup(dev)) {
963
- error = gpio_keys_enable_wakeup(ddata);
964
- if (error)
965
- return error;
967
+ if (!wakeup_bypass_enabled) {
968
+ error = gpio_keys_enable_wakeup(ddata);
969
+ if (error)
970
+ return error;
971
+ }
966972 } else {
967973 mutex_lock(&input->mutex);
968974 if (input->users)
....@@ -978,9 +984,13 @@
978984 struct gpio_keys_drvdata *ddata = dev_get_drvdata(dev);
979985 struct input_dev *input = ddata->input;
980986 int error = 0;
987
+ int wakeup_bypass_enabled = 0;
988
+
989
+ trace_android_vh_wakeup_bypass(&wakeup_bypass_enabled);
981990
982991 if (device_may_wakeup(dev)) {
983
- gpio_keys_disable_wakeup(ddata);
992
+ if (!wakeup_bypass_enabled)
993
+ gpio_keys_disable_wakeup(ddata);
984994 } else {
985995 mutex_lock(&input->mutex);
986996 if (input->users)