From b7c8cb3c41ba0fc7f9c0db9379d5c65871f6374d Mon Sep 17 00:00:00 2001 From: Ryzee119 Date: Sun, 29 May 2022 14:00:36 +0930 Subject: [PATCH] Hub: Unplug downstream devices on non-root hub disconnect --- src/host/usbh.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/host/usbh.c b/src/host/usbh.c index e0e41a8d..af2ad057 100644 --- a/src/host/usbh.c +++ b/src/host/usbh.c @@ -1107,6 +1107,12 @@ static void process_device_unplugged(uint8_t rhport, uint8_t hub_addr, uint8_t h { TU_LOG2(" Address = %u\r\n", dev_addr); + // If the device itself is a usb hub, unplug downstream devices. + if (dev_addr > CFG_TUH_DEVICE_MAX) + { + process_device_unplugged(rhport, dev_addr, 0); + } + // Invoke callback before close driver if (tuh_umount_cb) tuh_umount_cb(dev_addr);