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)