summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-03-12 22:45:12 +0800
committersakumisu <[email protected]>2024-03-12 22:45:12 +0800
commit2e862f38645460084e02cf3837c3aff687efa9c0 (patch)
tree29d598fe6accfba46d1cecb49a5d798d31d49e29
parent6369ead1529d59e5e2aee6b08a6fdbe113348b1a (diff)
set config with configvalue
-rw-r--r--core/usbh_core.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/core/usbh_core.c b/core/usbh_core.c
index 720dcdd9..56502dd1 100644
--- a/core/usbh_core.c
+++ b/core/usbh_core.c
@@ -393,6 +393,7 @@ int usbh_enumerate(struct usbh_hubport *hport)
struct usb_endpoint_descriptor *ep;
int dev_addr;
uint16_t ep_mps;
+ uint8_t config_value;
int ret;
hport->setup = &g_setup_buffer[hport->bus->busid][hport->parent->index - 1][hport->port - 1];
@@ -538,6 +539,8 @@ int usbh_enumerate(struct usbh_hubport *hport)
USB_LOG_ERR("No memory to alloc for raw_config_desc\r\n");
goto errout;
}
+
+ config_value = ((struct usb_configuration_descriptor *)ep0_request_buffer[hport->bus->busid])->bConfigurationValue;
memcpy(hport->raw_config_desc, ep0_request_buffer, wTotalLength);
#ifdef CONFIG_USBHOST_GET_STRING_DESC
uint8_t string_buffer[128];
@@ -575,7 +578,7 @@ int usbh_enumerate(struct usbh_hubport *hport)
/* Select device configuration 1 */
setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_STANDARD | USB_REQUEST_RECIPIENT_DEVICE;
setup->bRequest = USB_REQUEST_SET_CONFIGURATION;
- setup->wValue = 1;
+ setup->wValue = config_value;
setup->wIndex = 0;
setup->wLength = 0;