Revert changes to ChibiOS Suspend Code (#21830)

* Partially revert #19780

* Finish

* Get teensy 3.5/3.6 board files too

* fix lint issue

* Revert "[Bug] Restore usb suspend wakeup delay (#21676)"

This reverts commit e8e989fd7a.

* Apply suggestions from code review

Co-authored-by: Joel Challis <git@zvecr.com>

---------

Co-authored-by: Joel Challis <git@zvecr.com>
This commit is contained in:
Drashna Jaelre
2023-08-26 19:52:12 -07:00
committed by GitHub
parent 736451558e
commit 25331be316
10 changed files with 105 additions and 23 deletions

View File

@ -784,19 +784,34 @@ void init_usb_driver(USBDriver *usbp) {
#endif
}
restart_usb_driver(usbp);
/*
* Activates the USB driver and then the USB bus pull-up on D+.
* Note, a delay is inserted in order to not have to disconnect the cable
* after a reset.
*/
usbDisconnectBus(usbp);
usbStop(usbp);
wait_ms(50);
usbStart(usbp, &usbcfg);
usbConnectBus(usbp);
chVTObjectInit(&keyboard_idle_timer);
}
/** @brief Restarts the USB driver and emulates a physical bus reconnection.
* Note that the bus reconnection is MCU and even board specific, so it might
* be a NOP on some hardware platforms.
*/
__attribute__((weak)) void restart_usb_driver(USBDriver *usbp) {
usbDisconnectBus(usbp);
usbStop(usbp);
wait_ms(50);
#if USB_SUSPEND_WAKEUP_DELAY > 0
// Some hubs, kvm switches, and monitors do
// weird things, with USB device state bouncing
// around wildly on wakeup, yielding race
// conditions that can corrupt the keyboard state.
//
// Pause for a while to let things settle...
wait_ms(USB_SUSPEND_WAKEUP_DELAY);
#endif
usbStart(usbp, &usbcfg);
usbConnectBus(usbp);
}