Address wake from sleep instability (#11450)

* resolve race condition between suspend and wake in LUFA

* avoid multiple calls to suspend_power_down() / suspend_wakeup_init()

* Remove duplicate suspend_power_down_kb() call

* pause on wakeup to wait for USB state to settle

* need the repeated suspend_power_down() (that's where the sleep is)

* more efficient implementation

* fine tune the pause after sending wakeup

* speculative chibios version of pause-after-wake

* make wakeup delay configurable, and adjust value

* better location for wakeup delay
This commit is contained in:
Joshua Diamond
2021-02-01 19:12:41 -05:00
committed by Drashna Jael're
parent 9ee0271c00
commit 0aaf72a2b9
4 changed files with 35 additions and 5 deletions
-1
View File
@@ -110,7 +110,6 @@ static void power_down(uint8_t wdto) {
rgblight_disable_noeeprom();
}
# endif
suspend_power_down_kb();
// TODO: more power saving
// See PicoPower application note
+4
View File
@@ -12,3 +12,7 @@ void suspend_wakeup_init_user(void);
void suspend_wakeup_init_kb(void);
void suspend_power_down_user(void);
void suspend_power_down_kb(void);
#ifndef USB_SUSPEND_WAKEUP_DELAY
# define USB_SUSPEND_WAKEUP_DELAY 200
#endif