From 1409b368517a8ce9af1320acc75f7a8fbcdfca18 Mon Sep 17 00:00:00 2001 From: Joakim Tufvegren Date: Tue, 3 Aug 2021 23:38:37 +0200 Subject: [PATCH] Remove the #10088 hotfix for Teensy 3.1-like Input:Club keyboards (#12870) * Remove the #10088 hotfix for K20x MCU:s. It seems to _cause_ the issue it intended to solve there. * Cleaner way of removing #10088 hotfix. Now only affects Ergodox Infinity, Whitefox and K-type, though. Switches over Ergodox Infinity to the `IC_TEENSY_3_1` board, since that was a nice place to implement the `restart_usb_driver` override. However, I would guess this issue is present for other K20x/Teensy 3.1 boards as well... * Fix comment regarding `IC_TEENSY_3_1` for all keyboards using it. --- keyboards/ergodox_infinity/rules.mk | 7 +++++++ keyboards/k_type/rules.mk | 3 ++- keyboards/whitefox/rules.mk | 8 +++----- platforms/chibios/IC_TEENSY_3_1/board/board.c | 5 +++++ tmk_core/protocol/chibios/usb_main.c | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk index fbd52cd25..6c490ca0d 100644 --- a/keyboards/ergodox_infinity/rules.mk +++ b/keyboards/ergodox_infinity/rules.mk @@ -4,6 +4,13 @@ MCU = MK20DX256 # Bootloader selection BOOTLOADER = kiibohd +# Board: it should exist either in /os/hal/boards/ +# or /boards +# This board was copied from PJRC_TEENSY_3_1. The only difference should be a +# hack to ensure the watchdog has started before trying to disable it, and an +# override to disable restart of USB driver after returning from suspend. +BOARD = IC_TEENSY_3_1 + # Build Options # comment out to disable the options. # diff --git a/keyboards/k_type/rules.mk b/keyboards/k_type/rules.mk index 369cab4f0..ffd350ef8 100644 --- a/keyboards/k_type/rules.mk +++ b/keyboards/k_type/rules.mk @@ -7,7 +7,8 @@ BOOTLOADER = kiibohd # Board: it should exist either in /os/hal/boards/ # or /boards # This board was copied from PJRC_TEENSY_3_1. The only difference should be a -# hack to ensure the watchdog has started before trying to disable it. +# hack to ensure the watchdog has started before trying to disable it, and an +# override to disable restart of USB driver after returning from suspend. BOARD = IC_TEENSY_3_1 # Build Options diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk index 7c1d0c3de..cc02f3472 100644 --- a/keyboards/whitefox/rules.mk +++ b/keyboards/whitefox/rules.mk @@ -6,11 +6,9 @@ BOOTLOADER = kiibohd # Board: it should exist either in /os/hal/boards/ # or /boards -# - BOARD = -# - PJRC_TEENSY_LC for Teensy LC -# - PJRC_TEENSY_3 for Teensy 3.0 -# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 -# - MCHCK_K20 for Infinity KB +# This board was copied from PJRC_TEENSY_3_1. The only difference should be a +# hack to ensure the watchdog has started before trying to disable it, and an +# override to disable restart of USB driver after returning from suspend. BOARD = IC_TEENSY_3_1 # Build Options diff --git a/platforms/chibios/IC_TEENSY_3_1/board/board.c b/platforms/chibios/IC_TEENSY_3_1/board/board.c index 36ae8051e..424e0c975 100644 --- a/platforms/chibios/IC_TEENSY_3_1/board/board.c +++ b/platforms/chibios/IC_TEENSY_3_1/board/board.c @@ -144,3 +144,8 @@ void __early_init(void) { * @todo Add your board-specific code, if any. */ void boardInit(void) {} + + +void restart_usb_driver(USBDriver *usbp) { + // Do nothing. Restarting the USB driver on these boards breaks it. +} diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index 3adbb9799..441cfab97 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -705,7 +705,7 @@ void init_usb_driver(USBDriver *usbp) { chVTObjectInit(&keyboard_idle_timer); } -void restart_usb_driver(USBDriver *usbp) { +__attribute__((weak)) void restart_usb_driver(USBDriver *usbp) { usbStop(usbp); usbDisconnectBus(usbp);