summaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/Documentation/es1_ap_desc.c
blob: 1502089ec29c37b10be9bc771fe1300557795864 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* ES1 AP Bridge Chip USB descriptor definitions */

static const u8 es1_dev_descriptor[] = {
	0x12,		/* __u8   bLength */
	0x01,		/* __u8   bDescriptorType; Device */
	0x00, 0x02	/* __le16 bcdUSB v2.0 */
	0x00,		/* __u8   bDeviceClass */
	0x00,		/* __u8   bDeviceClass */
	0x00,		/* __u8   bDeviceSubClass; */
	0x00,		/* __u8   bDeviceProtocol; */
	0x40,		/* __u8   bMaxPacketSize0; 2^64 = 512 Bytes */

	0xff, 0xff,	/* __le16 idVendor; 0xffff  made up for now */
	0x01, 0x00,	/* __le16 idProduct; 0x0001  made up for now */
	0x01, 0x00,	/* __le16 bcdDevice; ES1 */

	0x03,		/* __u8  iManufacturer; */
	0x02,		/* __u8  iProduct; */
	0x01,		/* __u8  iSerialNumber; */
	0x01		/* __u8  bNumConfigurations; */
};

static const u8 es1_config_descriptor[] = {
	/* one configuration */
	0x09,		/*  __u8   bLength; */
	0x02,		/*  __u8   bDescriptorType; Configuration */
	0x19, 0x00,	/*  __le16 wTotalLength; */
	0x01,		/*  __u8   bNumInterfaces; (1) */
	0x01,		/*  __u8   bConfigurationValue; */
	0x00,		/*  __u8   iConfiguration; */
	0xc0,		/*  __u8   bmAttributes;
				 Bit 7: must be set,
				     6: Self-powered,
				     5: Remote wakeup,
				     4..0: resvd */
	0x00,		/*  __u8  MaxPower; */

	/* one interface */
	0x09,		/*  __u8  if_bLength; */
	0x04,		/*  __u8  if_bDescriptorType; Interface */
	0x00,		/*  __u8  if_bInterfaceNumber; */
	0x00,		/*  __u8  if_bAlternateSetting; */
	0x03,		/*  __u8  if_bNumEndpoints; */
	0xff,		/*  __u8  if_bInterfaceClass; Vendor-specific */
	0xff,		/*  __u8  if_bInterfaceSubClass; Vendor-specific */
	0xff,		/*  __u8  if_bInterfaceProtocol; Vendor-specific */
	0x00,		/*  __u8  if_iInterface; */

	/* three endpoints */
	0x07,		/*  __u8   ep_bLength; */
	0x05,		/*  __u8   ep_bDescriptorType; Endpoint */
	0x81,		/*  __u8   ep_bEndpointAddress; IN Endpoint 1 */
	0x03,		/*  __u8   ep_bmAttributes; Interrupt */
	0x00, 0x04,	/*  __le16 ep_wMaxPacketSize; 1024 */
	0x40,		/*  __u8   ep_bInterval; 64ms */

	0x07,		/*  __u8   ep_bLength; */
	0x05,		/*  __u8   ep_bDescriptorType; Endpoint */
	0x82,		/*  __u8   ep_bEndpointAddress; IN Endpoint 2 */
	0x02,		/*  __u8   ep_bmAttributes; Bulk */
	0x00, 0x04,	/*  __le16 ep_wMaxPacketSize; 1024 */
	0x40		/*  __u8   ep_bInterval; */

	0x07,		/*  __u8   ep_bLength; */
	0x05,		/*  __u8   ep_bDescriptorType; Endpoint */
	0x02,		/*  __u8   ep_bEndpointAddress; Out Endpoint 2 */
	0x02,		/*  __u8   ep_bmAttributes; Bulk */
	0x00, 0x04,	/*  __le16 ep_wMaxPacketSize; 1024 */
	0x40		/*  __u8   ep_bInterval; */
};