synaptics_s3708: don't double enable or disable interrupts

Bug: 31653505
Change-Id: I0fa30f930009bc99d55af7427861147d4b6f8c02
Signed-off-by: Ben Fennema <fennema@google.com>
diff --git a/firmware/src/drivers/synaptics_s3708/synaptics_s3708.c b/firmware/src/drivers/synaptics_s3708/synaptics_s3708.c
index c858ada..1706a66 100644
--- a/firmware/src/drivers/synaptics_s3708/synaptics_s3708.c
+++ b/firmware/src/drivers/synaptics_s3708/synaptics_s3708.c
@@ -150,17 +150,19 @@
     enum ProxState proxState;
     bool on;
     bool gestureEnabled;
+    bool isrEnabled;
 } mTask;
 
 static inline void enableInterrupt(bool enable)
 {
-    if (enable) {
+    if (!mTask.isrEnabled && enable) {
         extiEnableIntGpio(mTask.pin, EXTI_TRIGGER_FALLING);
         extiChainIsr(TOUCH_IRQ, &mTask.isr);
-    } else {
+    } else if (mTask.isrEnabled && !enable) {
         extiUnchainIsr(TOUCH_IRQ, &mTask.isr);
         extiDisableIntGpio(mTask.pin);
     }
+    mTask.isrEnabled = enable;
 }
 
 static bool touchIsr(struct ChainedIsr *localIsr)