core: Add suspend mode options
authortmk <hasu@tmk-kbd.com>
Tue, 4 Oct 2016 07:05:18 +0000 (16:05 +0900)
committertmk <hasu@tmk-kbd.com>
Tue, 4 Oct 2016 07:05:18 +0000 (16:05 +0900)
tmk_core/common/avr/suspend.c

index 580d69e4f117f9e1ecf1f5bf2428abdf85482063..b9b58c15ccbcb1999088325403e5777100cb44c3 100644 (file)
@@ -30,16 +30,6 @@ __asm__ __volatile__ (  \
 )
 
 
-void suspend_idle(uint8_t time)
-{
-    cli();
-    set_sleep_mode(SLEEP_MODE_IDLE);
-    sleep_enable();
-    sei();
-    sleep_cpu();
-    sleep_disable();
-}
-
 /* Power down MCU with watchdog timer
  * wdto: watchdog timer timeout defined in <avr/wdt.h>
  *          WDTO_15MS
@@ -80,9 +70,39 @@ static void power_down(uint8_t wdto)
     wdt_disable();
 }
 
+static void standby(void)
+{
+    set_sleep_mode(SLEEP_MODE_STANDBY);
+    sleep_enable();
+    sei();
+    sleep_cpu();
+    sleep_disable();
+}
+
+static void idle(void)
+{
+    set_sleep_mode(SLEEP_MODE_IDLE);
+    sleep_enable();
+    sei();
+    sleep_cpu();
+    sleep_disable();
+}
+
+
+void suspend_idle(uint8_t time)
+{
+    idle();
+}
+
 void suspend_power_down(void)
 {
+#ifdef SUSPEND_MODE_STANDBY
+    standby();
+#elif defined(SUSPEND_MODE_IDLE)
+    idle();
+#else
     power_down(WDTO_15MS);
+#endif
 }
 
 __attribute__ ((weak)) void matrix_power_up(void) {}
Imprint / Impressum