summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorAngus Gratton <angus@redyak.com.au>2024-03-27 14:52:09 +1100
committerDamien George <damien@micropython.org>2024-03-27 23:54:12 +1100
commit935f5391b51fb1e9f998cd7a38622296e3a79815 (patch)
tree96f44a8e12c5a0941fe947b4f7978cda47829b68
parent79edaddf501f30b44c544fd9dbef8b073c63cd0f (diff)
downloadmicropython-935f5391b51fb1e9f998cd7a38622296e3a79815.tar.gz
micropython-935f5391b51fb1e9f998cd7a38622296e3a79815.zip
shared/tinyusb: Don't disconnect on soft reset unless USB was active.
Previously, constructing the singleton USBDevice object was enough to trigger a USB disconnect on soft reset. Now it also has to be active. The only case where this changes the behaviour is if the USBDevice object has been constructed but never set to active (no more disconnect in this case). Otherwise, behaviour is the same. This change was requested by hippy on the raspberrypi forums. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
-rw-r--r--shared/tinyusb/mp_usbd_runtime.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/shared/tinyusb/mp_usbd_runtime.c b/shared/tinyusb/mp_usbd_runtime.c
index a46c0f85e6..2e2f7b75e4 100644
--- a/shared/tinyusb/mp_usbd_runtime.c
+++ b/shared/tinyusb/mp_usbd_runtime.c
@@ -431,11 +431,12 @@ void mp_usbd_init(void) {
// Top-level USB device deinit.
//
// This variant is called from soft reset, NULLs out the USB device
-// singleton instance from MP_STATE_VM, and disconnects the port.
+// singleton instance from MP_STATE_VM, and disconnects the port if a
+// runtime device was active.
void mp_usbd_deinit(void) {
mp_obj_usb_device_t *usbd = MP_OBJ_TO_PTR(MP_STATE_VM(usbd));
MP_STATE_VM(usbd) = MP_OBJ_NULL;
- if (usbd) {
+ if (usbd && usbd->active) {
// Disconnect if a runtime USB device was active
mp_usbd_disconnect(usbd);
}