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:
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user