diff --git a/builddefs/show_options.mk b/builddefs/show_options.mk index 1c1a3ebf8e0..bcb9e299c5e 100644 --- a/builddefs/show_options.mk +++ b/builddefs/show_options.mk @@ -70,6 +70,7 @@ OTHER_OPTION_NAMES = \ WATCHDOG_ENABLE \ ERGOINU \ NO_USB_STARTUP_CHECK \ + DISABLE_AVR_DEEP_SLEEP \ DISABLE_PROMICRO_LEDs \ MITOSIS_DATAGROK_BOTTOMSPACE \ MITOSIS_DATAGROK_SLOWUART \ diff --git a/docs/config_options.md b/docs/config_options.md index 91c17cf09d7..aa2acde1bd6 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -447,6 +447,8 @@ Use these to enable or disable building certain features. The more you have enab * Forces the keyboard to wait for a USB connection to be established before it starts up * `NO_USB_STARTUP_CHECK` * Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master. +* `DISABLE_AVR_DEEP_SLEEP` + * Disables AVR deep sleep. Similar to `NO_SUSPEND_POWER_DOWN` with the suspend routines executed, so backlight, audio, and OLED will be still turned off during sleep. * `DEFERRED_EXEC_ENABLE` * Enables deferred executor support -- timed delays before callbacks are invoked. See [deferred execution](custom_quantum_functions#deferred-execution) for more information. * `DYNAMIC_TAPPING_TERM_ENABLE` diff --git a/platforms/avr/suspend.c b/platforms/avr/suspend.c index 1a7cd3b4ab8..c9f7581f8ee 100644 --- a/platforms/avr/suspend.c +++ b/platforms/avr/suspend.c @@ -13,9 +13,7 @@ # include "vusb.h" #endif -// TODO: This needs some cleanup - -#if !defined(NO_SUSPEND_POWER_DOWN) && defined(WDT_vect) +#if !defined(NO_SUSPEND_POWER_DOWN) && !defined(DISABLE_AVR_DEEP_SLEEP) && defined(WDT_vect) // clang-format off #define wdt_intr_enable(value) \ @@ -105,7 +103,7 @@ void suspend_power_down(void) { #ifndef NO_SUSPEND_POWER_DOWN // Enter sleep state if possible (ie, the MCU has a watchdog timeout interrupt) -# if defined(WDT_vect) +# if defined(WDT_vect) && !defined(DISABLE_AVR_DEEP_SLEEP) power_down(WDTO_15MS); # endif #endif diff --git a/tmk_core/protocol.mk b/tmk_core/protocol.mk index 81520c1bc81..df17a474dc3 100644 --- a/tmk_core/protocol.mk +++ b/tmk_core/protocol.mk @@ -58,6 +58,10 @@ ifeq ($(strip $(USB_WAIT_FOR_ENUMERATION)), yes) OPT_DEFS += -DUSB_WAIT_FOR_ENUMERATION endif +ifeq ($(strip $(DISABLE_AVR_DEEP_SLEEP)), yes) + TMK_COMMON_DEFS += -DDISABLE_AVR_DEEP_SLEEP +endif + ifeq ($(strip $(JOYSTICK_SHARED_EP)), yes) OPT_DEFS += -DJOYSTICK_SHARED_EP SHARED_EP_ENABLE = yes