.. | .. |
---|
28 | 28 | #include <linux/of_irq.h> |
---|
29 | 29 | #include <linux/spinlock.h> |
---|
30 | 30 | #include <dt-bindings/input/gpio-keys.h> |
---|
| 31 | +#include <trace/hooks/wakeupbypass.h> |
---|
31 | 32 | |
---|
32 | 33 | struct gpio_button_data { |
---|
33 | 34 | const struct gpio_keys_button *button; |
---|
.. | .. |
---|
958 | 959 | struct gpio_keys_drvdata *ddata = dev_get_drvdata(dev); |
---|
959 | 960 | struct input_dev *input = ddata->input; |
---|
960 | 961 | int error; |
---|
| 962 | + int wakeup_bypass_enabled = 0; |
---|
| 963 | + |
---|
| 964 | + trace_android_vh_wakeup_bypass(&wakeup_bypass_enabled); |
---|
961 | 965 | |
---|
962 | 966 | 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 | + } |
---|
966 | 972 | } else { |
---|
967 | 973 | mutex_lock(&input->mutex); |
---|
968 | 974 | if (input->users) |
---|
.. | .. |
---|
978 | 984 | struct gpio_keys_drvdata *ddata = dev_get_drvdata(dev); |
---|
979 | 985 | struct input_dev *input = ddata->input; |
---|
980 | 986 | int error = 0; |
---|
| 987 | + int wakeup_bypass_enabled = 0; |
---|
| 988 | + |
---|
| 989 | + trace_android_vh_wakeup_bypass(&wakeup_bypass_enabled); |
---|
981 | 990 | |
---|
982 | 991 | if (device_may_wakeup(dev)) { |
---|
983 | | - gpio_keys_disable_wakeup(ddata); |
---|
| 992 | + if (!wakeup_bypass_enabled) |
---|
| 993 | + gpio_keys_disable_wakeup(ddata); |
---|
984 | 994 | } else { |
---|
985 | 995 | mutex_lock(&input->mutex); |
---|
986 | 996 | if (input->users) |
---|