TianoCore EDK2 master
Loading...
Searching...
No Matches
PeiUsbLib.h
Go to the documentation of this file.
1
10#ifndef _PEI_USB_LIB_H_
11#define _PEI_USB_LIB_H_
12
13//
14// Standard device request and request type
15// By [Spec-USB20/Chapter-9.4]
16//
17#define USB_DEV_GET_STATUS 0x00
18#define USB_DEV_GET_STATUS_REQ_TYPE_D 0x80 // Receiver : Device
19#define USB_DEV_GET_STATUS_REQ_TYPE_I 0x81 // Receiver : Interface
20#define USB_DEV_GET_STATUS_REQ_TYPE_E 0x82 // Receiver : Endpoint
21
22#define USB_DEV_CLEAR_FEATURE 0x01
23#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_D 0x00 // Receiver : Device
24#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_I 0x01 // Receiver : Interface
25#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_E 0x02 // Receiver : Endpoint
26
27#define USB_DEV_SET_FEATURE 0x03
28#define USB_DEV_SET_FEATURE_REQ_TYPE_D 0x00 // Receiver : Device
29#define USB_DEV_SET_FEATURE_REQ_TYPE_I 0x01 // Receiver : Interface
30#define USB_DEV_SET_FEATURE_REQ_TYPE_E 0x02 // Receiver : Endpoint
31
32#define USB_DEV_SET_ADDRESS 0x05
33#define USB_DEV_SET_ADDRESS_REQ_TYPE 0x00
34
35#define USB_DEV_GET_DESCRIPTOR 0x06
36#define USB_DEV_GET_DESCRIPTOR_REQ_TYPE 0x80
37
38#define USB_DEV_SET_DESCRIPTOR 0x07
39#define USB_DEV_SET_DESCRIPTOR_REQ_TYPE 0x00
40
41#define USB_DEV_GET_CONFIGURATION 0x08
42#define USB_DEV_GET_CONFIGURATION_REQ_TYPE 0x80
43
44#define USB_DEV_SET_CONFIGURATION 0x09
45#define USB_DEV_SET_CONFIGURATION_REQ_TYPE 0x00
46
47#define USB_DEV_GET_INTERFACE 0x0A
48#define USB_DEV_GET_INTERFACE_REQ_TYPE 0x81
49
50#define USB_DEV_SET_INTERFACE 0x0B
51#define USB_DEV_SET_INTERFACE_REQ_TYPE 0x01
52
53#define USB_DEV_SYNCH_FRAME 0x0C
54#define USB_DEV_SYNCH_FRAME_REQ_TYPE 0x82
55
56//
57// USB Descriptor types
58//
59#define USB_DT_DEVICE 0x01
60#define USB_DT_CONFIG 0x02
61#define USB_DT_STRING 0x03
62#define USB_DT_INTERFACE 0x04
63#define USB_DT_ENDPOINT 0x05
64#define USB_DT_HUB 0x29
65#define USB_DT_SUPERSPEED_HUB 0x2A
66#define USB_DT_HID 0x21
67
68//
69// USB request type
70//
71#define USB_TYPE_STANDARD (0x00 << 5)
72#define USB_TYPE_CLASS (0x01 << 5)
73#define USB_TYPE_VENDOR (0x02 << 5)
74#define USB_TYPE_RESERVED (0x03 << 5)
75
76//
77// USB request targer device
78//
79#define USB_RECIP_DEVICE 0x00
80#define USB_RECIP_INTERFACE 0x01
81#define USB_RECIP_ENDPOINT 0x02
82#define USB_RECIP_OTHER 0x03
83
84typedef enum {
85 EfiUsbEndpointHalt,
86 EfiUsbDeviceRemoteWakeup
87} EFI_USB_STANDARD_FEATURE_SELECTOR;
88
89//
90// Usb Data recipient type
91//
92typedef enum {
93 EfiUsbDevice,
94 EfiUsbInterface,
95 EfiUsbEndpoint
96} EFI_USB_RECIPIENT;
97
116 IN EFI_PEI_SERVICES **PeiServices,
117 IN PEI_USB_IO_PPI *UsbIoPpi,
118 IN UINT16 Value,
119 IN UINT16 Index,
120 IN UINT16 DescriptorLength,
121 OUT VOID *Descriptor
122 );
123
138 IN EFI_PEI_SERVICES **PeiServices,
139 IN PEI_USB_IO_PPI *UsbIoPpi,
140 IN UINT16 AddressValue
141 );
142
156 IN EFI_PEI_SERVICES **PeiServices,
157 IN PEI_USB_IO_PPI *UsbIoPpi
158 );
159
169BOOLEAN
171 IN UINT16 PortStatus
172 );
173
182UINTN
184 IN UINT16 PortStatus
185 );
186
187#endif
UINT64 UINTN
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
EFI_STATUS PeiUsbSetDeviceAddress(IN EFI_PEI_SERVICES **PeiServices, IN PEI_USB_IO_PPI *UsbIoPpi, IN UINT16 AddressValue)
Definition: PeiUsbLib.c:73
EFI_STATUS PeiUsbGetDescriptor(IN EFI_PEI_SERVICES **PeiServices, IN PEI_USB_IO_PPI *UsbIoPpi, IN UINT16 Value, IN UINT16 Index, IN UINT16 DescriptorLength, OUT VOID *Descriptor)
Definition: PeiUsbLib.c:30
UINTN PeiUsbGetDeviceSpeed(IN UINT16 PortStatus)
Definition: PeiUsbLib.c:169
EFI_STATUS PeiUsbSetConfiguration(IN EFI_PEI_SERVICES **PeiServices, IN PEI_USB_IO_PPI *UsbIoPpi)
Definition: PeiUsbLib.c:112
BOOLEAN IsPortConnect(IN UINT16 PortStatus)
Definition: PeiUsbLib.c:146