summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuper Liu <supercjliu@google.com>2023-04-20 07:04:52 +0000
committerSuper Liu <supercjliu@google.com>2023-04-20 08:08:54 +0000
commit6b7c5a051af6102abb92550a0f14ff3bb7129095 (patch)
treea666fa0c26f472a849eff339fe3416cf89fe17ae
parent683dc9b16e77314b96c63148313c94802aa34425 (diff)
downloadcommon-6b7c5a051af6102abb92550a0f14ff3bb7129095.tar.gz
gti: Acquire the wakelock before applying FW settings
Bug: 278972191 Change-Id: Ib743a289289a59a031699a951b65cc987c8bf32b Signed-off-by: Super Liu <supercjliu@google.com>
-rw-r--r--goog_touch_interface.c13
-rw-r--r--goog_touch_interface.h1
2 files changed, 13 insertions, 1 deletions
diff --git a/goog_touch_interface.c b/goog_touch_interface.c
index 1583293..4265a63 100644
--- a/goog_touch_interface.c
+++ b/goog_touch_interface.c
@@ -2226,9 +2226,16 @@ void goog_offload_populate_frame(struct goog_touch_interface *gti,
void goog_update_fw_settings(struct goog_touch_interface *gti)
{
+ int error;
int ret = 0;
bool enabled = false;
+ error = goog_pm_wake_lock_nosync(gti, GTI_PM_WAKELOCK_TYPE_FW_SETTINGS, true);
+ if (error < 0) {
+ GOOG_DBG(gti, "Error while obtaining FW_SETTINGS wakelock: %d!\n", error);
+ return;
+ }
+
if(!gti->ignore_grip_update) {
if (gti->offload.offload_running && gti->offload.config.filter_grip)
gti->cmd.grip_cmd.setting = GTI_GRIP_DISABLE;
@@ -2284,6 +2291,10 @@ void goog_update_fw_settings(struct goog_touch_interface *gti)
if (ret != 0)
GOOG_ERR(gti, "Failed to set report rate!\n");
}
+
+ error = goog_pm_wake_unlock_nosync(gti, GTI_PM_WAKELOCK_TYPE_FW_SETTINGS);
+ if (error < 0)
+ GOOG_DBG(gti, "Error while releasing FW_SETTING wakelock: %d!\n", error);
}
static void goog_offload_set_running(struct goog_touch_interface *gti, bool running)
@@ -2394,7 +2405,7 @@ int gti_charger_state_change(struct notifier_block *nb, unsigned long action,
ret = power_supply_get_property(psy, POWER_SUPPLY_PROP_PRESENT,
&present_val);
if (ret < 0)
- GOOG_ERR(gti,
+ GOOG_DBG(gti,
"Error while getting power supply property: %d!\n",
ret);
else if ((u8)present_val.intval != gti->charger_state) {
diff --git a/goog_touch_interface.h b/goog_touch_interface.h
index c53b911..6aa2716 100644
--- a/goog_touch_interface.h
+++ b/goog_touch_interface.h
@@ -168,6 +168,7 @@ enum gti_pm_wakelock_type : u32 {
GTI_PM_WAKELOCK_TYPE_BUGREPORT = (1 << 5),
GTI_PM_WAKELOCK_TYPE_OFFLOAD_REPORT = (1 << 6),
GTI_PM_WAKELOCK_TYPE_SENSOR_DATA = (1 << 7),
+ GTI_PM_WAKELOCK_TYPE_FW_SETTINGS = (1 << 8),
};
enum gti_proc_type : u32 {