Project

General

Profile

Download (2.4 KB) Statistics
| Branch: | Tag: | Revision:
1 4dc2cb5b laforge
#ifndef _USB_DESCRIPTORS_H
2
#define _USB_DESCRIPTORS_H
3
4
#include <usb_ch9.h>
5
#include <usb_hid.h>
6
#include <sys/types.h>
7
#include <openpcd.h>
8
#include <dfu/dfu.h>
9
10
#include "../config.h"
11
12
/* The USB descriptor set for emulating a HID device */
13
14
const struct usb_device_descriptor dev_descriptor = {
15
	.bLength = USB_DT_DEVICE_SIZE,
16
	.bDescriptorType = USB_DT_DEVICE,
17
	.bcdUSB = 0x0100,
18
	.bDeviceClass = 0x00,
19
	.bDeviceSubClass = 0x00,
20
	.bDeviceProtocol = 0x00,
21
	.bMaxPacketSize0 = 0x08,
22
	.idVendor = USB_VENDOR_ID,
23
	.idProduct = USB_PRODUCT_ID,
24
	.bcdDevice = 0x0030,	/* Version 0.3 */
25
#ifdef CONFIG_USB_STRING
26
	.iManufacturer = 3,
27
	.iProduct = 4,
28
	.iSerialNumber = 0,
29
#else
30
	.iManufacturer = 0,
31
	.iProduct = 0,
32
	.iSerialNumber = 0,
33
#endif
34
	.bNumConfigurations = 0x01,
35
};
36
37
struct _desc {
38
	struct usb_config_descriptor ucfg;
39
	struct usb_interface_descriptor uif;
40
	struct usb_hid_descriptor hid;
41
	struct usb_endpoint_descriptor ep[1];
42
#ifdef CONFIG_DFU
43
	struct usb_interface_descriptor uif_dfu[2];
44
#endif
45
};
46
47
const struct _desc cfg_descriptor = {
48
	.ucfg = {
49
		 .bLength = USB_DT_CONFIG_SIZE,
50
		 .bDescriptorType = USB_DT_CONFIG,
51
		 .wTotalLength = USB_DT_CONFIG_SIZE +
52
#ifdef CONFIG_DFU
53
		 		 3 * USB_DT_INTERFACE_SIZE + 
54
				 1 * USB_DT_ENDPOINT_SIZE,
55
		 .bNumInterfaces = 3,
56
#else
57
		 		 1 * USB_DT_INTERFACE_SIZE + 
58
				 1 * USB_DT_ENDPOINT_SIZE,
59
		 .bNumInterfaces = 1,
60
#endif
61
		 .bConfigurationValue = 1,
62
#ifdef CONFIG_USB_STRING
63
		 .iConfiguration = 5,
64
#else
65
		 .iConfiguration = 0,
66
#endif
67
		 .bmAttributes = USB_CONFIG_ATT_ONE,
68
		 .bMaxPower = 250,	/* 500mA */
69
		 },
70
	.uif = {
71
		.bLength = USB_DT_INTERFACE_SIZE,
72
		.bDescriptorType = USB_DT_INTERFACE,
73
		.bInterfaceNumber = 0,
74
		.bAlternateSetting = 0,
75
		.bNumEndpoints = 1,
76
		.bInterfaceClass = USB_CLASS_HID,
77
		.bInterfaceSubClass = 0,
78
		.bInterfaceProtocol = 0x01,
79
#ifdef CONFIG_USB_STRING
80
		.iInterface = 6,
81
#else
82
		.iInterface = 0,
83
#endif
84
		},
85
	.hid = {
86
		.bLength = 0x09,
87
		.bDescriptorType = HID_DT_HID,
88
		.bcdHID = 0x0111,
89
		.bCountryCode = 0,
90
		.bNumDescriptors = 1,
91
		.desc[0] = {
92
			.bDescriptorType = HID_DT_REPORT,
93
			.bLength = FIXME,
94
		},
95
	},
96
	.ep = {
97
		{
98
			  .bLength = USB_DT_ENDPOINT_SIZE,
99
			  .bDescriptorType = USB_DT_ENDPOINT,
100
			  .bEndpointAddress = OPENPCD_IRQ_EP,
101
			  .bmAttributes = USB_ENDPOINT_XFER_INT,
102
			  .wMaxPacketSize = AT91C_EP_IN_SIZE,
103
			  .bInterval = 0x0a,	/* FIXME */
104
		},
105
	},
106
107
#ifdef CONFIG_DFU
108
	.uif_dfu = DFU_RT_IF_DESC,
109
#endif
110
};
111
112
#endif /* _USB_DESCRIPTORS_H */
Add picture from clipboard (Maximum size: 48.8 MB)