diff options
author | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2008-02-23 13:19:06 +0000 |
---|---|---|
committer | laforge <laforge@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2008-02-23 13:19:06 +0000 |
commit | 4dc2cb5b49115f5376f27ff736a7939247deb111 (patch) | |
tree | 54cbcb1f570e6ab9b2d2250cba01547bf51a23f4 /firmware/src/os/usb_descriptors_hid.h | |
parent | 3639a49edf440277793a608b251be4340c750b24 (diff) |
* move usb descriptors into separate file (src/os/usb_descriptors_openpcd.h)
* add USB HID skeleton
git-svn-id: https://svn.openpcd.org:2342/trunk@426 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'firmware/src/os/usb_descriptors_hid.h')
-rw-r--r-- | firmware/src/os/usb_descriptors_hid.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/firmware/src/os/usb_descriptors_hid.h b/firmware/src/os/usb_descriptors_hid.h new file mode 100644 index 0000000..9399692 --- /dev/null +++ b/firmware/src/os/usb_descriptors_hid.h @@ -0,0 +1,112 @@ +#ifndef _USB_DESCRIPTORS_H +#define _USB_DESCRIPTORS_H + +#include <usb_ch9.h> +#include <usb_hid.h> +#include <sys/types.h> +#include <openpcd.h> +#include <dfu/dfu.h> + +#include "../config.h" + +/* The USB descriptor set for emulating a HID device */ + +const struct usb_device_descriptor dev_descriptor = { + .bLength = USB_DT_DEVICE_SIZE, + .bDescriptorType = USB_DT_DEVICE, + .bcdUSB = 0x0100, + .bDeviceClass = 0x00, + .bDeviceSubClass = 0x00, + .bDeviceProtocol = 0x00, + .bMaxPacketSize0 = 0x08, + .idVendor = USB_VENDOR_ID, + .idProduct = USB_PRODUCT_ID, + .bcdDevice = 0x0030, /* Version 0.3 */ +#ifdef CONFIG_USB_STRING + .iManufacturer = 3, + .iProduct = 4, + .iSerialNumber = 0, +#else + .iManufacturer = 0, + .iProduct = 0, + .iSerialNumber = 0, +#endif + .bNumConfigurations = 0x01, +}; + +struct _desc { + struct usb_config_descriptor ucfg; + struct usb_interface_descriptor uif; + struct usb_hid_descriptor hid; + struct usb_endpoint_descriptor ep[1]; +#ifdef CONFIG_DFU + struct usb_interface_descriptor uif_dfu[2]; +#endif +}; + +const struct _desc cfg_descriptor = { + .ucfg = { + .bLength = USB_DT_CONFIG_SIZE, + .bDescriptorType = USB_DT_CONFIG, + .wTotalLength = USB_DT_CONFIG_SIZE + +#ifdef CONFIG_DFU + 3 * USB_DT_INTERFACE_SIZE + + 1 * USB_DT_ENDPOINT_SIZE, + .bNumInterfaces = 3, +#else + 1 * USB_DT_INTERFACE_SIZE + + 1 * USB_DT_ENDPOINT_SIZE, + .bNumInterfaces = 1, +#endif + .bConfigurationValue = 1, +#ifdef CONFIG_USB_STRING + .iConfiguration = 5, +#else + .iConfiguration = 0, +#endif + .bmAttributes = USB_CONFIG_ATT_ONE, + .bMaxPower = 250, /* 500mA */ + }, + .uif = { + .bLength = USB_DT_INTERFACE_SIZE, + .bDescriptorType = USB_DT_INTERFACE, + .bInterfaceNumber = 0, + .bAlternateSetting = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0, + .bInterfaceProtocol = 0x01, +#ifdef CONFIG_USB_STRING + .iInterface = 6, +#else + .iInterface = 0, +#endif + }, + .hid = { + .bLength = 0x09, + .bDescriptorType = HID_DT_HID, + .bcdHID = 0x0111, + .bCountryCode = 0, + .bNumDescriptors = 1, + .desc[0] = { + .bDescriptorType = HID_DT_REPORT, + .bLength = FIXME, + }, + }, + .ep = { + { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = USB_DT_ENDPOINT, + .bEndpointAddress = OPENPCD_IRQ_EP, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = AT91C_EP_IN_SIZE, + .bInterval = 0x0a, /* FIXME */ + }, + }, + +#ifdef CONFIG_DFU + .uif_dfu = DFU_RT_IF_DESC, +#endif +}; + +#endif /* _USB_DESCRIPTORS_H */ |