]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.h
MdeModulePkg/UsbBus: Fix various typos
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbBusPei / HubPeim.h
CommitLineData
4b1bf81c 1/** @file\r
2Constants definitions for Usb Hub Peim\r
3\r
72750e3b 4Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
d1102dba 5\r
9d510e61 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
4b1bf81c 7\r
8**/\r
9\r
10#ifndef _PEI_HUB_PEIM_H_\r
11#define _PEI_HUB_PEIM_H_\r
12\r
13\r
14//\r
15// Hub feature numbers\r
16//\r
17#define C_HUB_LOCAL_POWER 0\r
18#define C_HUB_OVER_CURRENT 1\r
19\r
20//\r
21// Hub class code & sub class code\r
22//\r
23#define CLASS_CODE_HUB 0x09\r
24#define SUB_CLASS_CODE_HUB 0\r
25\r
26//\r
27// Hub Status & Hub Change bit masks\r
28//\r
29#define HUB_STATUS_LOCAL_POWER 0x0001\r
30#define HUB_STATUS_OVERCURRENT 0x0002\r
31\r
32#define HUB_CHANGE_LOCAL_POWER 0x0001\r
33#define HUB_CHANGE_OVERCURRENT 0x0002\r
34\r
35//\r
36// Hub Characteristics\r
37//\r
38#define HUB_CHAR_LPSM 0x0003\r
39#define HUB_CHAR_COMPOUND 0x0004\r
40#define HUB_CHAR_OCPM 0x0018\r
41\r
42//\r
43// Standard hub request and request type\r
44// By [Spec-USB20/Chapter-11.24]\r
45//\r
46#define USB_HUB_CLEAR_FEATURE 0x01\r
47#define USB_HUB_CLEAR_FEATURE_REQ_TYPE 0x20\r
48\r
49#define USB_HUB_CLEAR_FEATURE_PORT 0x01\r
50#define USB_HUB_CLEAR_FEATURE_PORT_REQ_TYPE 0x23\r
51\r
52#define USB_HUB_GET_BUS_STATE 0x02\r
53#define USB_HUB_GET_BUS_STATE_REQ_TYPE 0xA3\r
54\r
55#define USB_HUB_GET_DESCRIPTOR 0x06\r
56#define USB_HUB_GET_DESCRIPTOR_REQ_TYPE 0xA0\r
57\r
58#define USB_HUB_GET_HUB_STATUS 0x00\r
59#define USB_HUB_GET_HUB_STATUS_REQ_TYPE 0xA0\r
60\r
61#define USB_HUB_GET_PORT_STATUS 0x00\r
62#define USB_HUB_GET_PORT_STATUS_REQ_TYPE 0xA3\r
63\r
64#define USB_HUB_SET_DESCRIPTOR 0x07\r
65#define USB_HUB_SET_DESCRIPTOR_REQ_TYPE 0x20\r
66\r
67#define USB_HUB_SET_HUB_FEATURE 0x03\r
68#define USB_HUB_SET_HUB_FEATURE_REQ_TYPE 0x20\r
69\r
70#define USB_HUB_SET_PORT_FEATURE 0x03\r
71#define USB_HUB_SET_PORT_FEATURE_REQ_TYPE 0x23\r
72\r
73#define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE)\r
74#define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER)\r
75\r
d987459f
SZ
76#define USB_HUB_REQ_SET_DEPTH 12\r
77\r
4b1bf81c 78#define MAXBYTES 8\r
79#pragma pack(1)\r
80//\r
13a623cf 81// Hub descriptor, the last two fields are of variable length.\r
4b1bf81c 82//\r
83typedef struct {\r
84 UINT8 Length;\r
85 UINT8 DescriptorType;\r
86 UINT8 NbrPorts;\r
87 UINT8 HubCharacteristics[2];\r
88 UINT8 PwrOn2PwrGood;\r
89 UINT8 HubContrCurrent;\r
90 UINT8 Filler[MAXBYTES];\r
91} EFI_USB_HUB_DESCRIPTOR;\r
92\r
93typedef struct {\r
94 UINT16 HubStatus;\r
95 UINT16 HubChangeStatus;\r
96} EFI_USB_HUB_STATUS;\r
97\r
98#pragma pack()\r
99/**\r
100 Get a given hub port status.\r
101\r
102 @param PeiServices General-purpose services that are available to every PEIM.\r
103 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
104 @param Port Usb hub port number (starting from 1).\r
105 @param PortStatus Current Hub port status and change status.\r
106\r
107 @retval EFI_SUCCESS Port status is obtained successfully.\r
108 @retval EFI_DEVICE_ERROR Cannot get the port status due to a hardware error.\r
109 @retval Others Other failure occurs.\r
110\r
111**/\r
112EFI_STATUS\r
113PeiHubGetPortStatus (\r
114 IN EFI_PEI_SERVICES **PeiServices,\r
115 IN PEI_USB_IO_PPI *UsbIoPpi,\r
116 IN UINT8 Port,\r
117 OUT UINT32 *PortStatus\r
118 );\r
119\r
120/**\r
121 Set specified feature to a given hub port.\r
122\r
123 @param PeiServices General-purpose services that are available to every PEIM.\r
124 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
125 @param Port Usb hub port number (starting from 1).\r
126 @param Value New feature value.\r
127\r
128 @retval EFI_SUCCESS Port feature is set successfully.\r
129 @retval EFI_DEVICE_ERROR Cannot set the port feature due to a hardware error.\r
130 @retval Others Other failure occurs.\r
131\r
132**/\r
133EFI_STATUS\r
134PeiHubSetPortFeature (\r
135 IN EFI_PEI_SERVICES **PeiServices,\r
136 IN PEI_USB_IO_PPI *UsbIoPpi,\r
137 IN UINT8 Port,\r
138 IN UINT8 Value\r
139 );\r
140\r
4b1bf81c 141\r
142/**\r
143 Get a given hub status.\r
144\r
145 @param PeiServices General-purpose services that are available to every PEIM.\r
146 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
147 @param HubStatus Current Hub status and change status.\r
148\r
149 @retval EFI_SUCCESS Hub status is obtained successfully.\r
150 @retval EFI_DEVICE_ERROR Cannot get the hub status due to a hardware error.\r
151 @retval Others Other failure occurs.\r
152\r
153**/\r
154EFI_STATUS\r
155PeiHubGetHubStatus (\r
156 IN EFI_PEI_SERVICES **PeiServices,\r
157 IN PEI_USB_IO_PPI *UsbIoPpi,\r
158 OUT UINT32 *HubStatus\r
159 );\r
160\r
161/**\r
162 Clear specified feature on a given hub port.\r
163\r
164 @param PeiServices General-purpose services that are available to every PEIM.\r
165 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
166 @param Port Usb hub port number (starting from 1).\r
167 @param Value Feature value that will be cleared from the hub port.\r
168\r
169 @retval EFI_SUCCESS Port feature is cleared successfully.\r
170 @retval EFI_DEVICE_ERROR Cannot clear the port feature due to a hardware error.\r
171 @retval Others Other failure occurs.\r
172\r
173**/\r
174EFI_STATUS\r
175PeiHubClearPortFeature (\r
176 IN EFI_PEI_SERVICES **PeiServices,\r
177 IN PEI_USB_IO_PPI *UsbIoPpi,\r
178 IN UINT8 Port,\r
179 IN UINT8 Value\r
180 );\r
181\r
182/**\r
183 Clear specified feature on a given hub.\r
184\r
185 @param PeiServices General-purpose services that are available to every PEIM.\r
186 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
187 @param Value Feature value that will be cleared from the hub port.\r
188\r
189 @retval EFI_SUCCESS Hub feature is cleared successfully.\r
190 @retval EFI_DEVICE_ERROR Cannot clear the hub feature due to a hardware error.\r
191 @retval Others Other failure occurs.\r
192\r
193**/\r
194EFI_STATUS\r
195PeiHubClearHubFeature (\r
196 IN EFI_PEI_SERVICES **PeiServices,\r
197 IN PEI_USB_IO_PPI *UsbIoPpi,\r
198 IN UINT8 Value\r
199 );\r
200\r
201/**\r
202 Get a given hub descriptor.\r
203\r
204 @param PeiServices General-purpose services that are available to every PEIM.\r
72750e3b 205 @param PeiUsbDevice Indicates the hub controller device.\r
4b1bf81c 206 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
207 @param DescriptorSize The length of Hub Descriptor buffer.\r
208 @param HubDescriptor Caller allocated buffer to store the hub descriptor if\r
209 successfully returned.\r
210\r
211 @retval EFI_SUCCESS Hub descriptor is obtained successfully.\r
212 @retval EFI_DEVICE_ERROR Cannot get the hub descriptor due to a hardware error.\r
213 @retval Others Other failure occurs.\r
214\r
215**/\r
216EFI_STATUS\r
217PeiGetHubDescriptor (\r
218 IN EFI_PEI_SERVICES **PeiServices,\r
72750e3b 219 IN PEI_USB_DEVICE *PeiUsbDevice,\r
4b1bf81c 220 IN PEI_USB_IO_PPI *UsbIoPpi,\r
221 IN UINTN DescriptorSize,\r
222 OUT EFI_USB_HUB_DESCRIPTOR *HubDescriptor\r
223 );\r
224\r
225/**\r
226 Configure a given hub.\r
227\r
228 @param PeiServices General-purpose services that are available to every PEIM.\r
229 @param PeiUsbDevice Indicating the hub controller device that will be configured\r
230\r
231 @retval EFI_SUCCESS Hub configuration is done successfully.\r
232 @retval EFI_DEVICE_ERROR Cannot configure the hub due to a hardware error.\r
233\r
234**/\r
235EFI_STATUS\r
236PeiDoHubConfig (\r
237 IN EFI_PEI_SERVICES **PeiServices,\r
238 IN PEI_USB_DEVICE *PeiUsbDevice\r
239 );\r
240\r
241/**\r
242 Send reset signal over the given root hub port.\r
243\r
244 @param PeiServices General-purpose services that are available to every PEIM.\r
245 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
246 @param PortNum Usb hub port number (starting from 1).\r
247\r
248**/\r
249VOID\r
250PeiResetHubPort (\r
251 IN EFI_PEI_SERVICES **PeiServices,\r
252 IN PEI_USB_IO_PPI *UsbIoPpi,\r
253 IN UINT8 PortNum\r
254 );\r
255\r
256#endif\r
257\r
258\r