Merge changes I0fa30f93,I1577e934 into nyc-mr1-dev

* changes:
  synaptics_s3708: don't double enable or disable interrupts
  synaptics_s3708: disable interrupt when powering off
diff --git a/firmware/src/platform/stm32f4xx/exti.c b/firmware/src/platform/stm32f4xx/exti.c
index 2543ac2..5d5cb4b 100644
--- a/firmware/src/platform/stm32f4xx/exti.c
+++ b/firmware/src/platform/stm32f4xx/exti.c
@@ -186,6 +186,8 @@
     struct ExtiInterrupt *exti = extiForIrq(n);
     if (!exti)
         return -EINVAL;
+    else if (!list_is_empty(&isr->node))
+        return -EINVAL;
 
     chainIsr(&exti->base, isr);
     if (!mMaxLatency || (isr->maxLatencyNs && isr->maxLatencyNs < mMaxLatency))
@@ -199,6 +201,8 @@
     struct ExtiInterrupt *exti = extiForIrq(n);
     if (!exti)
         return -EINVAL;
+    else if (list_is_empty(&isr->node))
+        return -EINVAL;
 
     unchainIsr(&exti->base, isr);
     if (isr->maxLatencyNs && isr->maxLatencyNs == mMaxLatency)