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