From 102a0743326a03cd1a1202ceda21e175b7d3575c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Tue, 20 Feb 2024 01:20:52 +0000
Subject: [PATCH] add new system file

---
 kernel/drivers/input/keyboard/gpio_keys.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/kernel/drivers/input/keyboard/gpio_keys.c b/kernel/drivers/input/keyboard/gpio_keys.c
index f2d4e4d..725a196 100644
--- a/kernel/drivers/input/keyboard/gpio_keys.c
+++ b/kernel/drivers/input/keyboard/gpio_keys.c
@@ -28,6 +28,7 @@
 #include <linux/of_irq.h>
 #include <linux/spinlock.h>
 #include <dt-bindings/input/gpio-keys.h>
+#include <trace/hooks/wakeupbypass.h>
 
 struct gpio_button_data {
 	const struct gpio_keys_button *button;
@@ -958,11 +959,16 @@
 	struct gpio_keys_drvdata *ddata = dev_get_drvdata(dev);
 	struct input_dev *input = ddata->input;
 	int error;
+	int wakeup_bypass_enabled = 0;
+
+	trace_android_vh_wakeup_bypass(&wakeup_bypass_enabled);
 
 	if (device_may_wakeup(dev)) {
-		error = gpio_keys_enable_wakeup(ddata);
-		if (error)
-			return error;
+		if (!wakeup_bypass_enabled) {
+			error = gpio_keys_enable_wakeup(ddata);
+			if (error)
+				return error;
+		}
 	} else {
 		mutex_lock(&input->mutex);
 		if (input->users)
@@ -978,9 +984,13 @@
 	struct gpio_keys_drvdata *ddata = dev_get_drvdata(dev);
 	struct input_dev *input = ddata->input;
 	int error = 0;
+	int wakeup_bypass_enabled = 0;
+
+	trace_android_vh_wakeup_bypass(&wakeup_bypass_enabled);
 
 	if (device_may_wakeup(dev)) {
-		gpio_keys_disable_wakeup(ddata);
+		if (!wakeup_bypass_enabled)
+			gpio_keys_disable_wakeup(ddata);
 	} else {
 		mutex_lock(&input->mutex);
 		if (input->users)

--
Gitblit v1.6.2