From effcee25b7cbb2bb42d4134d37dc8a9ec4635130 Mon Sep 17 00:00:00 2001 From: Dillon Min Date: Thu, 11 Mar 2021 17:29:41 +0800 Subject: component: driver: usb: Add usb interface string(iInterface) setting To make compositive usb device string more reansonable, not all devices just show same "RTT Composite Device" on windows device manager. add a interface rt_usbd_device_set_interface_string to set respective interface string. Signed-off-by: Dillon Min v1 -> v2: remove all tabs to space, to match rt-thread coding style --- components/drivers/include/drivers/usb_device.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'components/drivers/include') diff --git a/components/drivers/include/drivers/usb_device.h b/components/drivers/include/drivers/usb_device.h index 26f0c4cf4a..e9f5bc467d 100644 --- a/components/drivers/include/drivers/usb_device.h +++ b/components/drivers/include/drivers/usb_device.h @@ -34,6 +34,10 @@ extern "C" { #define _PRODUCT_ID 0x0001 #endif +#ifndef MAX_INTF_STR +#define MAX_INTF_STR 20 +#endif + #define USB_BCD_DEVICE 0x0200 /* USB Specification Release Number in Binary-Coded Decimal */ #define USB_BCD_VERSION 0x0200 /* USB 2.0 */ #define EP0_IN_ADDR 0x80 @@ -193,7 +197,7 @@ struct udevice struct usb_qualifier_descriptor * dev_qualifier; usb_os_comp_id_desc_t os_comp_id_desc; const char** str; - + const char *str_intf[MAX_INTF_STR]; udevice_state_t state; rt_list_t cfg_list; uconfig_t curr_cfg; @@ -260,6 +264,7 @@ rt_err_t rt_usbd_event_signal(struct udev_msg* msg); rt_err_t rt_usbd_device_set_controller(udevice_t device, udcd_t dcd); rt_err_t rt_usbd_device_set_descriptor(udevice_t device, udev_desc_t dev_desc); rt_err_t rt_usbd_device_set_string(udevice_t device, const char** ustring); +rt_err_t rt_usbd_device_set_interface_string(udevice_t device, int index, const char* string); rt_err_t rt_usbd_device_set_qualifier(udevice_t device, struct usb_qualifier_descriptor* qualifier); rt_err_t rt_usbd_device_set_os_comp_id_desc(udevice_t device, usb_os_comp_id_desc_t os_comp_id_desc); rt_err_t rt_usbd_device_add_config(udevice_t device, uconfig_t cfg); -- cgit v1.3.1 From 9789e4c930fc1b3869f75a36e481a0c17e341d6a Mon Sep 17 00:00:00 2001 From: Dillon Min Date: Thu, 11 Mar 2021 17:31:35 +0800 Subject: component: driver: usb: enlarge uconfig_descriptor's data array space if you add more compositive usb device(more than 4), the data[256] can't hold all the devices's config information, array out of bounds. Fixes: 60c27fc4b ("add USB composite and mass storage class features in USB device stack") Signed-off-by: Dillon Min --- components/drivers/include/drivers/usb_common.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'components/drivers/include') diff --git a/components/drivers/include/drivers/usb_common.h b/components/drivers/include/drivers/usb_common.h index 4d85a85e35..a6c73c5601 100644 --- a/components/drivers/include/drivers/usb_common.h +++ b/components/drivers/include/drivers/usb_common.h @@ -112,7 +112,7 @@ extern "C" { #define USB_STRING_CONFIG_INDEX 0x04 #define USB_STRING_INTERFACE_INDEX 0x05 #define USB_STRING_OS_INDEX 0x06 -#define USB_STRING_MAX USB_STRING_OS_INDEX +#define USB_STRING_MAX 0xff #define USB_STRING_OS "MSFT100A" @@ -301,7 +301,7 @@ struct uconfig_descriptor rt_uint8_t iConfiguration; rt_uint8_t bmAttributes; rt_uint8_t MaxPower; - rt_uint8_t data[256]; + rt_uint8_t data[2048]; }; typedef struct uconfig_descriptor* ucfg_desc_t; -- cgit v1.3.1