From b5a52b4cff55520462559bf6b79b3ce5b32d661e Mon Sep 17 00:00:00 2001
From: Joy Lee <joylee.lc@foxmail.com>
Date: Fri, 2 Sep 2022 11:48:02 +0800
Subject: [PATCH] Prevent USB peripheral fault when restarting USB on WB32 MCUs
 (#18058)

Co-authored-by: Joy <chang.li@westberrytech.com>
---
 platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c   | 4 ++++
 platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c    | 4 ++++
 platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h | 2 ++
 3 files changed, 10 insertions(+)

diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c
index e38a7e0054..f74c9e8be7 100644
--- a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c
+++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c
@@ -80,3 +80,7 @@ void __early_init(void) {
 void boardInit(void) {
 
 }
+
+void restart_usb_driver(USBDriver *usbp) {
+  // Do nothing. Restarting the USB driver on these boards breaks it.
+}
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c
index 22b4ff73b5..a99537fc27 100644
--- a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c
@@ -80,3 +80,7 @@ void __early_init(void) {
 void boardInit(void) {
 
 }
+
+void restart_usb_driver(USBDriver *usbp) {
+  // Do nothing. Restarting the USB driver on these boards breaks it.
+}
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h
index e02e526113..d4c7e54642 100644
--- a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h
@@ -18,3 +18,5 @@
 #ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
 #    define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
 #endif
+
+#define USB_ENDPOINTS_ARE_REORDERABLE