xref: /openbmc/u-boot/include/usbroothubdes.h (revision eb838e7d)
1*eb838e7dSStephen Warren /*
2*eb838e7dSStephen Warren  * USB virtual root hub descriptors
3*eb838e7dSStephen Warren  *
4*eb838e7dSStephen Warren  * (C) Copyright 2014
5*eb838e7dSStephen Warren  * Stephen Warren swarren@wwwdotorg.org
6*eb838e7dSStephen Warren  *
7*eb838e7dSStephen Warren  * Based on ohci-hcd.c
8*eb838e7dSStephen Warren  *
9*eb838e7dSStephen Warren  * SPDX-License-Identifier:	GPL-2.0+
10*eb838e7dSStephen Warren  */
11*eb838e7dSStephen Warren 
12*eb838e7dSStephen Warren #ifndef __USBROOTHUBDES_H__
13*eb838e7dSStephen Warren #define __USBROOTHUBDES_H__
14*eb838e7dSStephen Warren 
15*eb838e7dSStephen Warren /* Device descriptor */
16*eb838e7dSStephen Warren static __u8 root_hub_dev_des[] = {
17*eb838e7dSStephen Warren 	0x12,		/* __u8  bLength; */
18*eb838e7dSStephen Warren 	0x01,		/* __u8  bDescriptorType; Device */
19*eb838e7dSStephen Warren 	0x10,		/* __u16 bcdUSB; v1.1 */
20*eb838e7dSStephen Warren 	0x01,
21*eb838e7dSStephen Warren 	0x09,		/* __u8  bDeviceClass; HUB_CLASSCODE */
22*eb838e7dSStephen Warren 	0x00,		/* __u8  bDeviceSubClass; */
23*eb838e7dSStephen Warren 	0x00,		/* __u8  bDeviceProtocol; */
24*eb838e7dSStephen Warren 	0x08,		/* __u8  bMaxPacketSize0; 8 Bytes */
25*eb838e7dSStephen Warren 	0x00,		/* __u16 idVendor; */
26*eb838e7dSStephen Warren 	0x00,
27*eb838e7dSStephen Warren 	0x00,		/* __u16 idProduct; */
28*eb838e7dSStephen Warren 	0x00,
29*eb838e7dSStephen Warren 	0x00,		/* __u16 bcdDevice; */
30*eb838e7dSStephen Warren 	0x00,
31*eb838e7dSStephen Warren 	0x00,		/* __u8  iManufacturer; */
32*eb838e7dSStephen Warren 	0x01,		/* __u8  iProduct; */
33*eb838e7dSStephen Warren 	0x00,		/* __u8  iSerialNumber; */
34*eb838e7dSStephen Warren 	0x01,		/* __u8  bNumConfigurations; */
35*eb838e7dSStephen Warren };
36*eb838e7dSStephen Warren 
37*eb838e7dSStephen Warren /* Configuration descriptor */
38*eb838e7dSStephen Warren static __u8 root_hub_config_des[] = {
39*eb838e7dSStephen Warren 	0x09,		/* __u8  bLength; */
40*eb838e7dSStephen Warren 	0x02,		/* __u8  bDescriptorType; Configuration */
41*eb838e7dSStephen Warren 	0x19,		/* __u16 wTotalLength; */
42*eb838e7dSStephen Warren 	0x00,
43*eb838e7dSStephen Warren 	0x01,		/* __u8  bNumInterfaces; */
44*eb838e7dSStephen Warren 	0x01,		/* __u8  bConfigurationValue; */
45*eb838e7dSStephen Warren 	0x00,		/* __u8  iConfiguration; */
46*eb838e7dSStephen Warren 	0x40,		/* __u8  bmAttributes;
47*eb838e7dSStephen Warren 			 *       Bit 7: Bus-powered
48*eb838e7dSStephen Warren 			 *       6: Self-powered,
49*eb838e7dSStephen Warren 			 *       5 Remote-wakwup,
50*eb838e7dSStephen Warren 			 *       4..0: resvd
51*eb838e7dSStephen Warren 			 */
52*eb838e7dSStephen Warren 	0x00,		/* __u8  MaxPower; */
53*eb838e7dSStephen Warren 	/* interface */
54*eb838e7dSStephen Warren 	0x09,		/* __u8  if_bLength; */
55*eb838e7dSStephen Warren 	0x04,		/* __u8  if_bDescriptorType; Interface */
56*eb838e7dSStephen Warren 	0x00,		/* __u8  if_bInterfaceNumber; */
57*eb838e7dSStephen Warren 	0x00,		/* __u8  if_bAlternateSetting; */
58*eb838e7dSStephen Warren 	0x01,		/* __u8  if_bNumEndpoints; */
59*eb838e7dSStephen Warren 	0x09,		/* __u8  if_bInterfaceClass; HUB_CLASSCODE */
60*eb838e7dSStephen Warren 	0x00,		/* __u8  if_bInterfaceSubClass; */
61*eb838e7dSStephen Warren 	0x00,		/* __u8  if_bInterfaceProtocol; */
62*eb838e7dSStephen Warren 	0x00,		/* __u8  if_iInterface; */
63*eb838e7dSStephen Warren 	/* endpoint */
64*eb838e7dSStephen Warren 	0x07,		/* __u8  ep_bLength; */
65*eb838e7dSStephen Warren 	0x05,		/* __u8  ep_bDescriptorType; Endpoint */
66*eb838e7dSStephen Warren 	0x81,		/* __u8  ep_bEndpointAddress; IN Endpoint 1 */
67*eb838e7dSStephen Warren 	0x03,		/* __u8  ep_bmAttributes; Interrupt */
68*eb838e7dSStephen Warren 	0x02,		/* __u16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */
69*eb838e7dSStephen Warren 	0x00,
70*eb838e7dSStephen Warren 	0xff,		/* __u8  ep_bInterval; 255 ms */
71*eb838e7dSStephen Warren };
72*eb838e7dSStephen Warren 
73*eb838e7dSStephen Warren #ifdef WANT_USB_ROOT_HUB_HUB_DES
74*eb838e7dSStephen Warren static unsigned char root_hub_hub_des[] = {
75*eb838e7dSStephen Warren 	0x09,		/* __u8  bLength; */
76*eb838e7dSStephen Warren 	0x29,		/* __u8  bDescriptorType; Hub-descriptor */
77*eb838e7dSStephen Warren 	0x02,		/* __u8  bNbrPorts; */
78*eb838e7dSStephen Warren 	0x00,		/* __u16 wHubCharacteristics; */
79*eb838e7dSStephen Warren 	0x00,
80*eb838e7dSStephen Warren 	0x01,		/* __u8  bPwrOn2pwrGood; 2ms */
81*eb838e7dSStephen Warren 	0x00,		/* __u8  bHubContrCurrent; 0 mA */
82*eb838e7dSStephen Warren 	0x00,		/* __u8  DeviceRemovable; *** 7 Ports max *** */
83*eb838e7dSStephen Warren 	0xff,		/* __u8  PortPwrCtrlMask; *** 7 ports max *** */
84*eb838e7dSStephen Warren };
85*eb838e7dSStephen Warren #endif
86*eb838e7dSStephen Warren 
87*eb838e7dSStephen Warren static unsigned char root_hub_str_index0[] = {
88*eb838e7dSStephen Warren 	0x04,		/* __u8  bLength; */
89*eb838e7dSStephen Warren 	0x03,		/* __u8  bDescriptorType; String-descriptor */
90*eb838e7dSStephen Warren 	0x09,		/* __u8  lang ID */
91*eb838e7dSStephen Warren 	0x04,		/* __u8  lang ID */
92*eb838e7dSStephen Warren };
93*eb838e7dSStephen Warren 
94*eb838e7dSStephen Warren static unsigned char root_hub_str_index1[] = {
95*eb838e7dSStephen Warren 	32,		/* __u8  bLength; */
96*eb838e7dSStephen Warren 	0x03,		/* __u8  bDescriptorType; String-descriptor */
97*eb838e7dSStephen Warren 	'U',		/* __u8  Unicode */
98*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
99*eb838e7dSStephen Warren 	'-',		/* __u8  Unicode */
100*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
101*eb838e7dSStephen Warren 	'B',		/* __u8  Unicode */
102*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
103*eb838e7dSStephen Warren 	'o',		/* __u8  Unicode */
104*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
105*eb838e7dSStephen Warren 	'o',		/* __u8  Unicode */
106*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
107*eb838e7dSStephen Warren 	't',		/* __u8  Unicode */
108*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
109*eb838e7dSStephen Warren 	' ',		/* __u8  Unicode */
110*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
111*eb838e7dSStephen Warren 	'R',		/* __u8  Unicode */
112*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
113*eb838e7dSStephen Warren 	'o',		/* __u8  Unicode */
114*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
115*eb838e7dSStephen Warren 	'o',		/* __u8  Unicode */
116*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
117*eb838e7dSStephen Warren 	't',		/* __u8  Unicode */
118*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
119*eb838e7dSStephen Warren 	' ',		/* __u8  Unicode */
120*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
121*eb838e7dSStephen Warren 	'H',		/* __u8  Unicode */
122*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
123*eb838e7dSStephen Warren 	'u',		/* __u8  Unicode */
124*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
125*eb838e7dSStephen Warren 	'b',		/* __u8  Unicode */
126*eb838e7dSStephen Warren 	0,		/* __u8  Unicode */
127*eb838e7dSStephen Warren };
128*eb838e7dSStephen Warren 
129*eb838e7dSStephen Warren #endif
130