#ifndef _USB_DESCRIPTORS_H #define _USB_DESCRIPTORS_H #include #include #include #include #include "../config.h" const struct usb_device_descriptor dev_descriptor = { .bLength = USB_DT_DEVICE_SIZE, .bDescriptorType = USB_DT_DEVICE, .bcdUSB = 0x0100, .bDeviceClass = USB_CLASS_VENDOR_SPEC, .bDeviceSubClass = 0xff, .bDeviceProtocol = 0xff, .bMaxPacketSize0 = 0x08, .idVendor = USB_VENDOR_ID, .idProduct = USB_PRODUCT_ID, .bcdDevice = 0x0030, /* Version 0.3 */ #ifdef CONFIG_USB_STRING .iManufacturer = 4, .iProduct = 5, .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_endpoint_descriptor ep[3]; #ifdef CONFIG_DFU struct usb_interface_descriptor uif_dfu[3]; #endif }; const struct _desc cfg_descriptor = { .ucfg = { .bLength = USB_DT_CONFIG_SIZE, .bDescriptorType = USB_DT_CONFIG, .wTotalLength = USB_DT_CONFIG_SIZE + #ifdef CONFIG_DFU 4 * USB_DT_INTERFACE_SIZE + 3 * USB_DT_ENDPOINT_SIZE, .bNumInterfaces = 4, #else 1 * USB_DT_INTERFACE_SIZE + 3 * USB_DT_ENDPOINT_SIZE, .bNumInterfaces = 1, #endif .bConfigurationValue = 1, #ifdef CONFIG_USB_STRING .iConfiguration = 6, #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 = 3, .bInterfaceClass = USB_CLASS_VENDOR_SPEC, .bInterfaceSubClass = 0, .bInterfaceProtocol = 0xff, #ifdef CONFIG_USB_STRING .iInterface = 7, #else .iInterface = 0, #endif }, .ep= { { .bLength = USB_DT_ENDPOINT_SIZE, .bDescriptorType = USB_DT_ENDPOINT, .bEndpointAddress = OPENPCD_OUT_EP, .bmAttributes = USB_ENDPOINT_XFER_BULK, .wMaxPacketSize = AT91C_EP_OUT_SIZE, .bInterval = 0x00, }, { .bLength = USB_DT_ENDPOINT_SIZE, .bDescriptorType = USB_DT_ENDPOINT, .bEndpointAddress = OPENPCD_IN_EP, .bmAttributes = USB_ENDPOINT_XFER_BULK, .wMaxPacketSize = AT91C_EP_IN_SIZE, .bInterval = 0x00, }, { .bLength = USB_DT_ENDPOINT_SIZE, .bDescriptorType = USB_DT_ENDPOINT, .bEndpointAddress = OPENPCD_IRQ_EP, .bmAttributes = USB_ENDPOINT_XFER_INT, .wMaxPacketSize = AT91C_EP_IN_SIZE, .bInterval = 0xff, /* FIXME */ }, }, #ifdef CONFIG_DFU .uif_dfu = DFU_RT_IF_DESC, #endif }; #endif /* _USB_DESCRIPTORS_H */