]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Usb/UsbBusPei/PeiUsbLib.h
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbBusPei / PeiUsbLib.h
CommitLineData
4b1bf81c 1/** @file\r
13a623cf 2Common Library for PEI USB\r
4b1bf81c 3\r
d1102dba
LG
4Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved. <BR>\r
5\r
9d510e61 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
4b1bf81c 7\r
8**/\r
9\r
10#ifndef _PEI_USB_LIB_H_\r
11#define _PEI_USB_LIB_H_\r
12\r
4b1bf81c 13//\r
14// Standard device request and request type\r
15// By [Spec-USB20/Chapter-9.4]\r
16//\r
1436aea4
MK
17#define USB_DEV_GET_STATUS 0x00\r
18#define USB_DEV_GET_STATUS_REQ_TYPE_D 0x80 // Receiver : Device\r
19#define USB_DEV_GET_STATUS_REQ_TYPE_I 0x81 // Receiver : Interface\r
20#define USB_DEV_GET_STATUS_REQ_TYPE_E 0x82 // Receiver : Endpoint\r
4b1bf81c 21\r
1436aea4
MK
22#define USB_DEV_CLEAR_FEATURE 0x01\r
23#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_D 0x00 // Receiver : Device\r
24#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_I 0x01 // Receiver : Interface\r
25#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_E 0x02 // Receiver : Endpoint\r
4b1bf81c 26\r
1436aea4
MK
27#define USB_DEV_SET_FEATURE 0x03\r
28#define USB_DEV_SET_FEATURE_REQ_TYPE_D 0x00 // Receiver : Device\r
29#define USB_DEV_SET_FEATURE_REQ_TYPE_I 0x01 // Receiver : Interface\r
30#define USB_DEV_SET_FEATURE_REQ_TYPE_E 0x02 // Receiver : Endpoint\r
4b1bf81c 31\r
1436aea4
MK
32#define USB_DEV_SET_ADDRESS 0x05\r
33#define USB_DEV_SET_ADDRESS_REQ_TYPE 0x00\r
4b1bf81c 34\r
1436aea4
MK
35#define USB_DEV_GET_DESCRIPTOR 0x06\r
36#define USB_DEV_GET_DESCRIPTOR_REQ_TYPE 0x80\r
4b1bf81c 37\r
1436aea4
MK
38#define USB_DEV_SET_DESCRIPTOR 0x07\r
39#define USB_DEV_SET_DESCRIPTOR_REQ_TYPE 0x00\r
4b1bf81c 40\r
41#define USB_DEV_GET_CONFIGURATION 0x08\r
42#define USB_DEV_GET_CONFIGURATION_REQ_TYPE 0x80\r
43\r
44#define USB_DEV_SET_CONFIGURATION 0x09\r
45#define USB_DEV_SET_CONFIGURATION_REQ_TYPE 0x00\r
46\r
1436aea4
MK
47#define USB_DEV_GET_INTERFACE 0x0A\r
48#define USB_DEV_GET_INTERFACE_REQ_TYPE 0x81\r
4b1bf81c 49\r
1436aea4
MK
50#define USB_DEV_SET_INTERFACE 0x0B\r
51#define USB_DEV_SET_INTERFACE_REQ_TYPE 0x01\r
4b1bf81c 52\r
1436aea4
MK
53#define USB_DEV_SYNCH_FRAME 0x0C\r
54#define USB_DEV_SYNCH_FRAME_REQ_TYPE 0x82\r
4b1bf81c 55\r
56//\r
57// USB Descriptor types\r
58//\r
1436aea4
MK
59#define USB_DT_DEVICE 0x01\r
60#define USB_DT_CONFIG 0x02\r
61#define USB_DT_STRING 0x03\r
62#define USB_DT_INTERFACE 0x04\r
63#define USB_DT_ENDPOINT 0x05\r
64#define USB_DT_HUB 0x29\r
65#define USB_DT_SUPERSPEED_HUB 0x2A\r
66#define USB_DT_HID 0x21\r
4b1bf81c 67\r
68//\r
69// USB request type\r
70//\r
1436aea4
MK
71#define USB_TYPE_STANDARD (0x00 << 5)\r
72#define USB_TYPE_CLASS (0x01 << 5)\r
73#define USB_TYPE_VENDOR (0x02 << 5)\r
74#define USB_TYPE_RESERVED (0x03 << 5)\r
4b1bf81c 75\r
76//\r
77// USB request targer device\r
78//\r
1436aea4
MK
79#define USB_RECIP_DEVICE 0x00\r
80#define USB_RECIP_INTERFACE 0x01\r
81#define USB_RECIP_ENDPOINT 0x02\r
82#define USB_RECIP_OTHER 0x03\r
4b1bf81c 83\r
84typedef enum {\r
85 EfiUsbEndpointHalt,\r
86 EfiUsbDeviceRemoteWakeup\r
87} EFI_USB_STANDARD_FEATURE_SELECTOR;\r
88\r
89//\r
90// Usb Data recipient type\r
91//\r
92typedef enum {\r
93 EfiUsbDevice,\r
94 EfiUsbInterface,\r
95 EfiUsbEndpoint\r
96} EFI_USB_RECIPIENT;\r
97\r
98/**\r
99 Get a given usb descriptor.\r
100\r
101 @param PeiServices General-purpose services that are available to every PEIM.\r
102 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
103 @param Value Request Value.\r
104 @param Index Request Index.\r
105 @param DescriptorLength Request descriptor Length.\r
106 @param Descriptor Request descriptor.\r
107\r
108\r
109 @retval EFI_SUCCESS Usb descriptor is obtained successfully.\r
110 @retval EFI_DEVICE_ERROR Cannot get the usb descriptor due to a hardware error.\r
111 @retval Others Other failure occurs.\r
112\r
113**/\r
114EFI_STATUS\r
115PeiUsbGetDescriptor (\r
1436aea4
MK
116 IN EFI_PEI_SERVICES **PeiServices,\r
117 IN PEI_USB_IO_PPI *UsbIoPpi,\r
118 IN UINT16 Value,\r
119 IN UINT16 Index,\r
120 IN UINT16 DescriptorLength,\r
121 OUT VOID *Descriptor\r
4b1bf81c 122 );\r
123\r
124/**\r
125 Set a usb device with a specified address.\r
126\r
127 @param PeiServices General-purpose services that are available to every PEIM.\r
128 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
129 @param AddressValue The address to assign.\r
130\r
131 @retval EFI_SUCCESS Usb device address is set successfully.\r
132 @retval EFI_DEVICE_ERROR Cannot set the usb address due to a hardware error.\r
133 @retval Others Other failure occurs.\r
134\r
135**/\r
136EFI_STATUS\r
137PeiUsbSetDeviceAddress (\r
1436aea4
MK
138 IN EFI_PEI_SERVICES **PeiServices,\r
139 IN PEI_USB_IO_PPI *UsbIoPpi,\r
140 IN UINT16 AddressValue\r
4b1bf81c 141 );\r
142\r
4b1bf81c 143/**\r
144 Configure a usb device to Configuration 1.\r
145\r
146 @param PeiServices General-purpose services that are available to every PEIM.\r
147 @param UsbIoPpi Indicates the PEI_USB_IO_PPI instance.\r
148\r
149 @retval EFI_SUCCESS Usb device is set to use Configuration 1 successfully.\r
150 @retval EFI_DEVICE_ERROR Cannot set the usb device due to a hardware error.\r
151 @retval Others Other failure occurs.\r
152\r
153**/\r
154EFI_STATUS\r
155PeiUsbSetConfiguration (\r
1436aea4
MK
156 IN EFI_PEI_SERVICES **PeiServices,\r
157 IN PEI_USB_IO_PPI *UsbIoPpi\r
4b1bf81c 158 );\r
159\r
4b1bf81c 160/**\r
161 Judge if the port is connected with a usb device or not.\r
162\r
163 @param PortStatus The usb port status gotten.\r
164\r
165 @retval TRUE A usb device is connected with the port.\r
166 @retval FALSE No usb device is connected with the port.\r
167\r
168**/\r
169BOOLEAN\r
170IsPortConnect (\r
171 IN UINT16 PortStatus\r
172 );\r
173\r
174/**\r
d987459f 175 Get device speed according to port status.\r
4b1bf81c 176\r
d987459f 177 @param PortStatus The usb port status gotten.\r
4b1bf81c 178\r
d987459f 179 @return Device speed value.\r
4b1bf81c 180\r
181**/\r
182UINTN\r
d987459f 183PeiUsbGetDeviceSpeed (\r
1436aea4 184 IN UINT16 PortStatus\r
4b1bf81c 185 );\r
186\r
4b1bf81c 187#endif\r