Browse Source

Add hotfix for chibios keyboards not wake (#10088)

LSChyi 5 years ago
parent
commit
b1a6b161f3

+ 1 - 0
tmk_core/protocol/chibios/main.c

@@ -236,6 +236,7 @@ int main(void) {
                 /* Remote wakeup */
                 if (suspend_wakeup_condition()) {
                     usbWakeupHost(&USB_DRIVER);
+                    restart_usb_driver(&USB_DRIVER);
                 }
             }
             /* Woken up */

+ 7 - 0
tmk_core/protocol/chibios/usb_main.c

@@ -574,6 +574,13 @@ void init_usb_driver(USBDriver *usbp) {
     chVTObjectInit(&keyboard_idle_timer);
 }
 
+void restart_usb_driver(USBDriver *usbp) {
+    usbStop(usbp);
+    usbDisconnectBus(usbp);
+    usbStart(usbp, &usbcfg);
+    usbConnectBus(usbp);
+}
+
 /* ---------------------------------------------------------
  *                  Keyboard functions
  * ---------------------------------------------------------

+ 3 - 0
tmk_core/protocol/chibios/usb_main.h

@@ -35,6 +35,9 @@
 /* Initialize the USB driver and bus */
 void init_usb_driver(USBDriver *usbp);
 
+/* Restart the USB driver and bus */
+void restart_usb_driver(USBDriver *usbp);
+
 /* ---------------
  * Keyboard header
  * ---------------