X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=tmk_core%2Fcommon%2Favr%2Fsuspend.c;h=02d7e4c9426eea2921a4322d3959fe8952c7154d;hb=44fc56a86922fe7684441f207eb5af4c4f4bdca3;hp=580d69e4f117f9e1ecf1f5bf2428abdf85482063;hpb=9818d54d26e2900bf91b288bc6f268adc8e0b8fd;p=max%2Ftmk_keyboard.git diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 580d69e4..02d7e4c9 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -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 * WDTO_15MS @@ -80,13 +70,45 @@ 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 NO_SUSPEND_POWER_DOWN + ; +#elif defined(SUSPEND_MODE_NOPOWERSAVE) + ; +#elif defined(SUSPEND_MODE_STANDBY) + standby(); +#elif defined(SUSPEND_MODE_IDLE) + idle(); +#else power_down(WDTO_15MS); +#endif } -__attribute__ ((weak)) void matrix_power_up(void) {} -__attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { matrix_power_up(); @@ -102,7 +124,7 @@ bool suspend_wakeup_condition(void) void suspend_wakeup_init(void) { // clear keyboard state - matrix_init(); + matrix_clear(); clear_keyboard(); #ifdef BACKLIGHT_ENABLE backlight_init();