~ruther/qmk_firmware

680d401faf03737b01f595b8800c211c0d130db6 — Jonathan Rascher 5 years ago 6fd88c1
Support RGBLIGHT_SLEEP when ChibiOS boards suspend (#7280)

Copypasta from the AVR suspend implementation with a Teensy-specific
hack removed
1 files changed, 26 insertions(+), 0 deletions(-)

M tmk_core/common/chibios/suspend.c
M tmk_core/common/chibios/suspend.c => tmk_core/common/chibios/suspend.c +26 -0
@@ 15,6 15,13 @@
#    include "backlight.h"
#endif

#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
#    include "rgblight.h"
extern rgblight_config_t rgblight_config;
static bool              rgblight_enabled;
static bool              is_suspended;
#endif

/** \brief suspend idle
 *
 * FIXME: needs doc


@@ 43,6 50,16 @@ void suspend_power_down(void) {
    // TODO: figure out what to power down and how
    // shouldn't power down TPM/FTM if we want a breathing LED
    // also shouldn't power down USB
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
#    ifdef RGBLIGHT_ANIMATIONS
    rgblight_timer_disable();
#    endif
    if (!is_suspended) {
        is_suspended     = true;
        rgblight_enabled = rgblight_config.enable;
        rgblight_disable_noeeprom();
    }
#endif

    suspend_power_down_kb();
    // on AVR, this enables the watchdog for 15ms (max), and goes to


@@ 104,5 121,14 @@ void suspend_wakeup_init(void) {
#ifdef BACKLIGHT_ENABLE
    backlight_init();
#endif /* BACKLIGHT_ENABLE */
#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
    is_suspended = false;
    if (rgblight_enabled) {
        rgblight_enable_noeeprom();
    }
#    ifdef RGBLIGHT_ANIMATIONS
    rgblight_timer_enable();
#    endif
#endif
    suspend_wakeup_init_kb();
}