diff options
| author | uestczyh222 <[email protected]> | 2017-11-23 00:37:21 +0800 |
|---|---|---|
| committer | uestczyh222 <[email protected]> | 2017-11-23 00:38:56 +0800 |
| commit | cfc0304be5c87f1cf509bb4201dea52cb50cfaf0 (patch) | |
| tree | 456da2b5d81184328b5bef40ab611104cf875bc8 /components/drivers/include | |
| parent | 5b8aa350ac4dda29b2ba0b906e67d2f3bdd63fb7 (diff) | |
[Compinents][USB]增加USB协议栈对微软OS描述符的支持,修复HID class的IAD接口,增加免驱新class WinUSB
Diffstat (limited to 'components/drivers/include')
| -rw-r--r-- | components/drivers/include/drivers/usb_common.h | 32 | ||||
| -rw-r--r-- | components/drivers/include/drivers/usb_device.h | 3 |
2 files changed, 35 insertions, 0 deletions
diff --git a/components/drivers/include/drivers/usb_common.h b/components/drivers/include/drivers/usb_common.h index 0422404f6d..ff332e8f7a 100644 --- a/components/drivers/include/drivers/usb_common.h +++ b/components/drivers/include/drivers/usb_common.h @@ -125,6 +125,10 @@ extern "C" { #define USB_STRING_SERIAL_INDEX 0x03 #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_OS "MSFT100A" #define USB_PID_OUT 0x01 #define USB_PID_ACK 0x02 @@ -390,6 +394,34 @@ struct usb_qualifier_descriptor rt_uint8_t bRESERVED; } __attribute__ ((packed)); +struct usb_os_header_comp_id_descriptor +{ + rt_uint32_t dwLength; + rt_uint16_t bcdVersion; + rt_uint16_t wIndex; + rt_uint8_t bCount; + rt_uint8_t reserved[7]; +}; +typedef struct usb_os_header_comp_id_descriptor * usb_os_header_desc_t; + +struct usb_os_function_comp_id_descriptor +{ + rt_list_t list; + rt_uint8_t bFirstInterfaceNumber; + rt_uint8_t reserved1; + rt_uint8_t compatibleID[8]; + rt_uint8_t subCompatibleID[8]; + rt_uint8_t reserved2[6]; +}; +typedef struct usb_os_function_comp_id_descriptor * usb_os_func_comp_id_desc_t; + +struct usb_os_comp_id_descriptor +{ + struct usb_os_header_comp_id_descriptor head_desc; + rt_list_t func_desc; +}; +typedef struct usb_os_comp_id_descriptor * usb_os_comp_id_desc_t; + #ifndef HID_SUB_DESCRIPTOR_MAX #define HID_SUB_DESCRIPTOR_MAX 1 #endif diff --git a/components/drivers/include/drivers/usb_device.h b/components/drivers/include/drivers/usb_device.h index 5e2417e90d..11ae608582 100644 --- a/components/drivers/include/drivers/usb_device.h +++ b/components/drivers/include/drivers/usb_device.h @@ -200,6 +200,7 @@ struct udevice struct udevice_descriptor dev_desc; struct usb_qualifier_descriptor * dev_qualifier; + usb_os_comp_id_desc_t os_comp_id_desc; const char** str; udevice_state_t state; @@ -261,11 +262,13 @@ 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_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); rt_err_t rt_usbd_config_add_function(uconfig_t cfg, ufunction_t func); rt_err_t rt_usbd_function_add_interface(ufunction_t func, uintf_t intf); rt_err_t rt_usbd_interface_add_altsetting(uintf_t intf, ualtsetting_t setting); rt_err_t rt_usbd_altsetting_add_endpoint(ualtsetting_t setting, uep_t ep); +rt_err_t rt_usbd_os_comp_id_desc_add_os_func_comp_id_desc(usb_os_comp_id_desc_t os_comp_id_desc, usb_os_func_comp_id_desc_t os_func_comp_id_desc); rt_err_t rt_usbd_altsetting_config_descriptor(ualtsetting_t setting, const void* desc, rt_off_t intf_pos); rt_err_t rt_usbd_set_config(udevice_t device, rt_uint8_t value); rt_err_t rt_usbd_set_altsetting(uintf_t intf, rt_uint8_t value); |
