summaryrefslogtreecommitdiff
path: root/components/drivers/include
diff options
context:
space:
mode:
authoruestczyh222 <[email protected]>2017-11-23 00:37:21 +0800
committeruestczyh222 <[email protected]>2017-11-23 00:38:56 +0800
commitcfc0304be5c87f1cf509bb4201dea52cb50cfaf0 (patch)
tree456da2b5d81184328b5bef40ab611104cf875bc8 /components/drivers/include
parent5b8aa350ac4dda29b2ba0b906e67d2f3bdd63fb7 (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.h32
-rw-r--r--components/drivers/include/drivers/usb_device.h3
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);