1 | /** @file
|
---|
2 | Defines the USB Host Controller PPI that provides I/O services for a USB Host
|
---|
3 | Controller that may be used to access recovery devices. These interfaces are
|
---|
4 | modeled on the UEFI 2.3 specification EFI_USB2_HOST_CONTROLLER_PROTOCOL.
|
---|
5 | Refer to section 16.1 of the UEFI 2.3 Specification for more information on
|
---|
6 | these interfaces.
|
---|
7 |
|
---|
8 | Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved. <BR>
|
---|
9 |
|
---|
10 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
11 |
|
---|
12 | **/
|
---|
13 |
|
---|
14 | #ifndef _PEI_USB2_HOST_CONTROLLER_PPI_H_
|
---|
15 | #define _PEI_USB2_HOST_CONTROLLER_PPI_H_
|
---|
16 |
|
---|
17 | #include <Protocol/Usb2HostController.h>
|
---|
18 |
|
---|
19 | ///
|
---|
20 | /// Global ID for the PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
21 | ///
|
---|
22 | #define PEI_USB2_HOST_CONTROLLER_PPI_GUID \
|
---|
23 | { \
|
---|
24 | 0xa7d09fe1, 0x74d4, 0x4ba5, { 0x84, 0x7c, 0x12, 0xed, 0x5b, 0x19, 0xad, 0xe4 } \
|
---|
25 | }
|
---|
26 |
|
---|
27 | ///
|
---|
28 | /// Forward declaration for the PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
29 | ///
|
---|
30 | typedef struct _PEI_USB2_HOST_CONTROLLER_PPI PEI_USB2_HOST_CONTROLLER_PPI;
|
---|
31 |
|
---|
32 | /**
|
---|
33 | Initiate a USB control transfer using a specific USB Host controller on the USB bus.
|
---|
34 |
|
---|
35 | @param[in] PeiServices The pointer to the PEI Services Table.
|
---|
36 | @param[in] This The pointer to this instance of the
|
---|
37 | PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
38 | @param[in] DeviceAddress Represents the address of the target device
|
---|
39 | on the USB.
|
---|
40 | @param[in] DeviceSpeed Indicates device speed.
|
---|
41 | @param[in] MaximumPacketLength Indicates the maximum packet size that the
|
---|
42 | default control transfer
|
---|
43 | endpoint is capable of sending or receiving.
|
---|
44 | @param[in] Request A pointer to the USB device request that
|
---|
45 | will be sent to the USB device.
|
---|
46 | @param[in] TransferDirection Specifies the data direction for the transfer.
|
---|
47 | There are three values available:
|
---|
48 | EfiUsbDataIn, EfiUsbDataOut and EfiUsbNoData.
|
---|
49 | @param[in,out] Data A pointer to the buffer of data that will
|
---|
50 | be transmitted to USB device or
|
---|
51 | received from USB device.
|
---|
52 | @param[in,out] DataLength On input, indicates the size, in bytes, of
|
---|
53 | the data buffer specified by Data.
|
---|
54 | On output, indicates the amount of data
|
---|
55 | actually transferred.
|
---|
56 | @param[in] TimeOut Indicates the maximum time, in milliseconds,
|
---|
57 | that the transfer is allowed to complete.
|
---|
58 | If Timeout is 0, then the caller must wait for
|
---|
59 | the function to be completed until EFI_SUCCESS
|
---|
60 | or EFI_DEVICE_ERROR is returned.
|
---|
61 | @param[in] Translator A pointer to the transaction translator data.
|
---|
62 | @param[out] TransferResult A pointer to the detailed result information
|
---|
63 | generated by this control transfer.
|
---|
64 |
|
---|
65 | @retval EFI_SUCCESS The control transfer was completed successfully.
|
---|
66 | @retval EFI_DEVICE_ERROR The control transfer failed due to host controller
|
---|
67 | or device error.
|
---|
68 | @retval EFI_INVALID_PARAMETER Some parameters are invalid.
|
---|
69 | @retval EFI_OUT_OF_RESOURCES The control transfer could not be completed due to a lack of resources.
|
---|
70 | @retval EFI_TIMEOUT The control transfer failed due to timeout.
|
---|
71 |
|
---|
72 |
|
---|
73 | **/
|
---|
74 | typedef
|
---|
75 | EFI_STATUS
|
---|
76 | (EFIAPI *PEI_USB2_HOST_CONTROLLER_CONTROL_TRANSFER)(
|
---|
77 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
78 | IN PEI_USB2_HOST_CONTROLLER_PPI *This,
|
---|
79 | IN UINT8 DeviceAddress,
|
---|
80 | IN UINT8 DeviceSpeed,
|
---|
81 | IN UINTN MaximumPacketLength,
|
---|
82 | IN USB_DEVICE_REQUEST *Request,
|
---|
83 | IN EFI_USB_DATA_DIRECTION TransferDirection,
|
---|
84 | IN OUT VOID *Data OPTIONAL,
|
---|
85 | IN OUT UINTN *DataLength OPTIONAL,
|
---|
86 | IN UINTN TimeOut,
|
---|
87 | IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
|
---|
88 | OUT UINT32 *TransferResult
|
---|
89 | );
|
---|
90 |
|
---|
91 | /**
|
---|
92 | Initiate a USB bulk transfer using a specific USB Host controller on the USB bus.
|
---|
93 |
|
---|
94 | @param[in] PeiServices The pointer to the PEI Services Table.
|
---|
95 | @param[in] This The pointer to this instance of the
|
---|
96 | PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
97 | @param[in] DeviceAddress Represents the address of the target device
|
---|
98 | on the USB.
|
---|
99 | @param[in] EndPointAddress The combination of an endpoint number and
|
---|
100 | an endpoint direction of the target USB device.
|
---|
101 | @param[in] DeviceSpeed Indicates device speed.
|
---|
102 | @param[in] MaximumPacketLength Indicates the maximum packet size the target
|
---|
103 | endpoint is capable of sending or receiving.
|
---|
104 | @param[in,out] Data Array of pointers to the buffers of data
|
---|
105 | that will be transmitted to USB device or
|
---|
106 | received from USB device.
|
---|
107 | @param[in,out] DataLength When input, indicates the size, in bytes, of
|
---|
108 | the data buffers specified by Data. When output,
|
---|
109 | indicates the data size actually transferred.
|
---|
110 | @param[in,out] DataToggle A pointer to the data toggle value.
|
---|
111 | @param[in] TimeOut Indicates the maximum time, in milliseconds,
|
---|
112 | in which the transfer is allowed to complete.
|
---|
113 | If Timeout is 0, then the caller must wait for
|
---|
114 | the function to be completed until EFI_SUCCESS
|
---|
115 | or EFI_DEVICE_ERROR is returned.
|
---|
116 | @param[in] Translator A pointer to the transaction translator data.
|
---|
117 | @param[out] TransferResult A pointer to the detailed result information
|
---|
118 | of the bulk transfer.
|
---|
119 |
|
---|
120 | @retval EFI_SUCCESS The bulk transfer was completed successfully.
|
---|
121 | @retval EFI_DEVICE_ERROR The bulk transfer failed due to host controller or device error.
|
---|
122 | Caller should check TransferResult for detailed error information.
|
---|
123 | @retval EFI_INVALID_PARAMETER Some parameters are invalid.
|
---|
124 | @retval EFI_OUT_OF_RESOURCES The bulk transfer could not be submitted due to a lack of resources.
|
---|
125 | @retval EFI_TIMEOUT The bulk transfer failed due to timeout.
|
---|
126 |
|
---|
127 |
|
---|
128 | **/
|
---|
129 | typedef
|
---|
130 | EFI_STATUS
|
---|
131 | (EFIAPI *PEI_USB2_HOST_CONTROLLER_BULK_TRANSFER)(
|
---|
132 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
133 | IN PEI_USB2_HOST_CONTROLLER_PPI *This,
|
---|
134 | IN UINT8 DeviceAddress,
|
---|
135 | IN UINT8 EndPointAddress,
|
---|
136 | IN UINT8 DeviceSpeed,
|
---|
137 | IN UINTN MaximumPacketLength,
|
---|
138 | IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],
|
---|
139 | IN OUT UINTN *DataLength,
|
---|
140 | IN OUT UINT8 *DataToggle,
|
---|
141 | IN UINTN TimeOut,
|
---|
142 | IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
|
---|
143 | OUT UINT32 *TransferResult
|
---|
144 | );
|
---|
145 |
|
---|
146 | /**
|
---|
147 | Retrieves the number of root hub ports.
|
---|
148 |
|
---|
149 | @param[in] PeiServices The pointer to the PEI Services Table.
|
---|
150 | @param[in] This The pointer to this instance of the
|
---|
151 | PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
152 | @param[out] PortNumber The pointer to the number of the root hub ports.
|
---|
153 |
|
---|
154 | @retval EFI_SUCCESS The port number was retrieved successfully.
|
---|
155 | @retval EFI_INVALID_PARAMETER PortNumber is NULL.
|
---|
156 |
|
---|
157 | **/
|
---|
158 | typedef
|
---|
159 | EFI_STATUS
|
---|
160 | (EFIAPI *PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_NUMBER)(
|
---|
161 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
162 | IN PEI_USB2_HOST_CONTROLLER_PPI *This,
|
---|
163 | OUT UINT8 *PortNumber
|
---|
164 | );
|
---|
165 |
|
---|
166 | /**
|
---|
167 | Retrieves the current status of a USB root hub port.
|
---|
168 |
|
---|
169 | @param[in] PeiServices The pointer to the PEI Services Table.
|
---|
170 | @param[in] This The pointer to this instance of the
|
---|
171 | PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
172 | @param[in] PortNumber Specifies the root hub port from which the status is
|
---|
173 | to be retrieved.
|
---|
174 | This value is zero based.
|
---|
175 | @param[out] PortStatus A pointer to the current port status bits and port
|
---|
176 | status change bits.
|
---|
177 |
|
---|
178 | @retval EFI_SUCCESS The status of the USB root hub port specified by
|
---|
179 | PortNumber was returned in PortStatus.
|
---|
180 | @retval EFI_INVALID_PARAMETER PortNumber is invalid.
|
---|
181 |
|
---|
182 | **/
|
---|
183 | typedef
|
---|
184 | EFI_STATUS
|
---|
185 | (EFIAPI *PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_STATUS)(
|
---|
186 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
187 | IN PEI_USB2_HOST_CONTROLLER_PPI *This,
|
---|
188 | IN UINT8 PortNumber,
|
---|
189 | OUT EFI_USB_PORT_STATUS *PortStatus
|
---|
190 | );
|
---|
191 |
|
---|
192 | /**
|
---|
193 | Sets a feature for the specified root hub port.
|
---|
194 |
|
---|
195 | @param[in] PeiServices The pointer to the PEI Services Table.
|
---|
196 | @param[in] This The pointer to this instance of the
|
---|
197 | PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
198 | @param[in] PortNumber Specifies the root hub port whose feature is requested
|
---|
199 | to be set. This value is zero based.
|
---|
200 | @param[in] PortFeature Indicates the feature selector associated with the feature
|
---|
201 | set request.
|
---|
202 |
|
---|
203 | @retval EFI_SUCCESS The feature specified by PortFeature was set for
|
---|
204 | the USB root hub port specified by PortNumber.
|
---|
205 | @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid
|
---|
206 | for this function.
|
---|
207 | @retval EFI_TIMEOUT The time out occurred
|
---|
208 |
|
---|
209 | **/
|
---|
210 | typedef
|
---|
211 | EFI_STATUS
|
---|
212 | (EFIAPI *PEI_USB2_HOST_CONTROLLER_SET_ROOTHUB_PORT_FEATURE)(
|
---|
213 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
214 | IN PEI_USB2_HOST_CONTROLLER_PPI *This,
|
---|
215 | IN UINT8 PortNumber,
|
---|
216 | IN EFI_USB_PORT_FEATURE PortFeature
|
---|
217 | );
|
---|
218 |
|
---|
219 | /**
|
---|
220 | Clears a feature for the specified root hub port.
|
---|
221 |
|
---|
222 | @param[in] PeiServices The pointer to the PEI Services Table.
|
---|
223 | @param[in] This The pointer to this instance of the
|
---|
224 | PEI_USB2_HOST_CONTROLLER_PPI.
|
---|
225 | @param[in] PortNumber Specifies the root hub port whose feature is
|
---|
226 | requested to be cleared.
|
---|
227 | @param[in] PortFeature Indicates the feature selector associated with the
|
---|
228 | feature clear request.
|
---|
229 |
|
---|
230 | @return EFI_SUCCESS The feature specified by PortFeature was cleared
|
---|
231 | for the USB root hub port specified by PortNumber.
|
---|
232 | @return EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid.
|
---|
233 |
|
---|
234 | **/
|
---|
235 | typedef
|
---|
236 | EFI_STATUS
|
---|
237 | (EFIAPI *PEI_USB2_HOST_CONTROLLER_CLEAR_ROOTHUB_PORT_FEATURE)(
|
---|
238 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
239 | IN PEI_USB2_HOST_CONTROLLER_PPI *This,
|
---|
240 | IN UINT8 PortNumber,
|
---|
241 | IN EFI_USB_PORT_FEATURE PortFeature
|
---|
242 | );
|
---|
243 |
|
---|
244 | ///
|
---|
245 | /// This PPI contains a set of services to interact with the USB host controller.
|
---|
246 | /// These interfaces are modeled on the UEFI 2.3 specification protocol
|
---|
247 | /// EFI_USB2_HOST_CONTROLLER_PROTOCOL. Refer to section 16.1 of the UEFI 2.3
|
---|
248 | /// Specification for more information on these interfaces.
|
---|
249 | ///
|
---|
250 | struct _PEI_USB2_HOST_CONTROLLER_PPI {
|
---|
251 | PEI_USB2_HOST_CONTROLLER_CONTROL_TRANSFER ControlTransfer;
|
---|
252 | PEI_USB2_HOST_CONTROLLER_BULK_TRANSFER BulkTransfer;
|
---|
253 | PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_NUMBER GetRootHubPortNumber;
|
---|
254 | PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus;
|
---|
255 | PEI_USB2_HOST_CONTROLLER_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature;
|
---|
256 | PEI_USB2_HOST_CONTROLLER_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature;
|
---|
257 | };
|
---|
258 |
|
---|
259 | extern EFI_GUID gPeiUsb2HostControllerPpiGuid;
|
---|
260 |
|
---|
261 | #endif
|
---|
262 |
|
---|