summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2023-02-23 17:53:42 +0800
committersakumisu <[email protected]>2023-02-23 17:55:11 +0800
commit5e406f41c1f26b1a41fe489f6a0beda772228790 (patch)
treea84bd87bb6520d19d2cba33b720c02d35c46e088
parent043c594cd8ed4a8a9893f08f484d986592852ec5 (diff)
move ep0 active into hub event
-rw-r--r--class/hub/usbh_hub.c11
-rw-r--r--core/usbh_core.c7
2 files changed, 8 insertions, 10 deletions
diff --git a/class/hub/usbh_hub.c b/class/hub/usbh_hub.c
index 09557d3a..c0506e6e 100644
--- a/class/hub/usbh_hub.c
+++ b/class/hub/usbh_hub.c
@@ -509,18 +509,22 @@ static void usbh_hub_events(struct usbh_hub *hub)
child->connected = true;
child->port = port + 1;
child->speed = speed;
-
+
USB_LOG_INFO("New %s device on Hub %u, Port %u connected\r\n", speed_table[speed], hub->index, port + 1);
+ /* Configure EP0 with the default maximum packet size */
+ usbh_hport_activate_ep0(child);
+
if (usbh_enumerate(child) < 0) {
+ /** release child sources */
+ usbh_hubport_release(child);
USB_LOG_ERR("Port %u enumerate fail\r\n", port + 1);
}
} else {
- USB_LOG_ERR("Failed to enable port %u\r\n", port + 1);
-
child = &hub->child[port];
/** release child sources */
usbh_hubport_release(child);
+ USB_LOG_ERR("Failed to enable port %u\r\n", port + 1);
continue;
}
@@ -528,6 +532,7 @@ static void usbh_hub_events(struct usbh_hub *hub)
child = &hub->child[port];
/** release child sources */
usbh_hubport_release(child);
+ USB_LOG_INFO("Device on Hub %u, Port %u disconnected\r\n", hub->index, port + 1);
}
}
}
diff --git a/core/usbh_core.c b/core/usbh_core.c
index 03741619..3a231d66 100644
--- a/core/usbh_core.c
+++ b/core/usbh_core.c
@@ -419,9 +419,6 @@ int usbh_enumerate(struct usbh_hubport *hport)
hport->setup = &g_setup[hport->parent->index - 1][hport->port - 1];
setup = hport->setup;
- /* Configure EP0 with the default maximum packet size */
- usbh_hport_activate_ep0(hport);
-
/* Read the first 8 bytes of the device descriptor */
setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_STANDARD | USB_REQUEST_RECIPIENT_DEVICE;
setup->bRequest = USB_REQUEST_GET_DESCRIPTOR;
@@ -629,10 +626,6 @@ int usbh_enumerate(struct usbh_hubport *hport)
}
errout:
- if (ret < 0) {
- hport->config.config_desc.bNumInterfaces = 0;
- usbh_hport_deactivate_ep0(hport);
- }
if (hport->raw_config_desc) {
usb_free(hport->raw_config_desc);
hport->raw_config_desc = NULL;