summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--goog_touch_interface.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/goog_touch_interface.c b/goog_touch_interface.c
index db2ab83..8369505 100644
--- a/goog_touch_interface.c
+++ b/goog_touch_interface.c
@@ -3467,10 +3467,20 @@ static irqreturn_t gti_irq_handler(int irq, void *data)
static irqreturn_t gti_irq_thread_fn(int irq, void *data)
{
- irqreturn_t ret;
+ int error;
+ irqreturn_t ret = IRQ_NONE;
struct goog_touch_interface *gti = (struct goog_touch_interface *)data;
ATRACE_BEGIN(__func__);
+
+ error = goog_pm_wake_lock(gti, GTI_PM_WAKELOCK_TYPE_IRQ, true);
+ if (error < 0) {
+ GOOG_WARN(gti, "Skipping stray interrupt, power_status: %d, new power_status: %d\n",
+ gti->pm.state, gti->pm.new_state);
+ ATRACE_END();
+ return IRQ_HANDLED;
+ }
+
cpu_latency_qos_update_request(&gti->pm_qos_req, 100 /* usec */);
/*
@@ -3491,6 +3501,7 @@ static irqreturn_t gti_irq_thread_fn(int irq, void *data)
gti_debug_hc_update(gti, false);
cpu_latency_qos_update_request(&gti->pm_qos_req, PM_QOS_DEFAULT_VALUE);
+ goog_pm_wake_unlock_nosync(gti, GTI_PM_WAKELOCK_TYPE_IRQ);
ATRACE_END();
return ret;