//\r
#define TIMEOUT_VALUE 3 * 1000\r
\r
+/**\r
+ Get Hid Descriptor\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param InterfaceNum Hid interface number\r
+ @param HidDescriptor Caller allocated buffer to store Usb hid descriptor if\r
+ successfully returned.\r
+\r
+ @return Status of getting HID descriptor through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetHidDescriptor (\r
OUT EFI_USB_HID_DESCRIPTOR *HidDescriptor\r
);\r
\r
+\r
+/**\r
+ get Report Class descriptor\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL.\r
+ @param InterfaceNum Report interface number.\r
+ @param DescriptorSize Length of DescriptorBuffer.\r
+ @param DescriptorBuffer Caller allocated buffer to store Usb report descriptor\r
+ if successfully returned.\r
+\r
+ @return Status of getting Report Class descriptor through USB\r
+ I/O protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetReportDescriptor (\r
OUT UINT8 *DescriptorBuffer\r
);\r
\r
+/**\r
+ Get Hid Protocol Request\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Interface Which interface the caller wants to get protocol\r
+ @param Protocol Protocol value returned.\r
+\r
+ @return Status of getting Protocol Request through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetProtocolRequest (\r
IN UINT8 *Protocol\r
);\r
\r
+/**\r
+ Set Hid Protocol Request\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Interface Which interface the caller wants to set protocol\r
+ @param Protocol Protocol value the caller wants to set.\r
+\r
+ @return Status of setting Protocol Request through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetProtocolRequest (\r
IN UINT8 Protocol\r
);\r
\r
+/**\r
+ Set Idel request.\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Interface Which interface the caller wants to set.\r
+ @param ReportId Which report the caller wants to set.\r
+ @param Duration Idle rate the caller wants to set.\r
+\r
+ @return Status of setting IDLE Request through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetIdleRequest (\r
IN UINT8 Duration\r
);\r
\r
+/**\r
+ Get Idel request.\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Interface Which interface the caller wants to get.\r
+ @param ReportId Which report the caller wants to get.\r
+ @param Duration Idle rate the caller wants to get.\r
+\r
+ @return Status of getting IDLE Request through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetIdleRequest (\r
OUT UINT8 *Duration\r
);\r
\r
+/**\r
+ Hid Set Report request.\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Interface Which interface the caller wants to set.\r
+ @param ReportId Which report the caller wants to set.\r
+ @param ReportType Type of report.\r
+ @param ReportLen Length of report descriptor.\r
+ @param Report Report Descriptor buffer.\r
+\r
+ @return Status of setting Report Request through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetReportRequest (\r
IN UINT8 *Report\r
);\r
\r
+/**\r
+ Hid Set Report request.\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Interface Which interface the caller wants to set.\r
+ @param ReportId Which report the caller wants to set.\r
+ @param ReportType Type of report.\r
+ @param ReportLen Length of report descriptor.\r
+ @param Report Caller allocated buffer to store Report Descriptor.\r
+\r
+ @return Status of getting Report Request through USB I/O\r
+ protocol's UsbControlTransfer().\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetReportRequest (\r
IN UINT8 *Report\r
);\r
\r
+/**\r
+ Usb Get Descriptor\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Value Device Request Value\r
+ @param Index Device Request Index\r
+ @param DescriptorLength Descriptor Length\r
+ @param Descriptor Descriptor buffer to contain result\r
+ @param Status Transfer Status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
UsbGetDescriptor (\r
IN EFI_USB_IO_PROTOCOL *UsbIo,\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Set Descriptor\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Value Device Request Value\r
+ @param Index Device Request Index\r
+ @param DescriptorLength Descriptor Length\r
+ @param Descriptor Descriptor buffer to set\r
+ @param Status Transfer Status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetDescriptor (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Get Device Interface\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Index Interface index value\r
+ @param AltSetting Alternate setting\r
+ @param Status Trasnsfer status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetInterface (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Set Device Interface\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param InterfaceNo Interface Number\r
+ @param AltSetting Alternate setting\r
+ @param Status Trasnsfer status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetInterface (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Get Device Configuration\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param ConfigValue Config Value\r
+ @param Status Transfer Status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetConfiguration (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Set Device Configuration\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Value Configuration Value to set\r
+ @param Status Transfer status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetConfiguration (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Set Device Feature\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Recipient Interface/Device/Endpoint\r
+ @param Value Request value\r
+ @param Target Request Index\r
+ @param Status Transfer status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbSetFeature (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Clear Device Feature\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Recipient Interface/Device/Endpoint\r
+ @param Value Request value\r
+ @param Target Request Index\r
+ @param Status Transfer status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbClearFeature (\r
OUT UINT32 *Status\r
);\r
\r
+/**\r
+ Usb Get Device Status\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param Recipient Interface/Device/Endpoint\r
+ @param Target Request index\r
+ @param DevStatus Device status\r
+ @param Status Transfer status\r
+\r
+ @retval EFI_INVALID_PARAMETER Parameter is error\r
+ @retval EFI_SUCCESS Success\r
+ @retval EFI_TIMEOUT Device has no response\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbGetStatus (\r
OUT UINT32 *Status\r
);\r
\r
-//\r
-// Clear endpoint stall\r
-//\r
+/**\r
+ Clear endpoint stall\r
+\r
+ @param UsbIo EFI_USB_IO_PROTOCOL\r
+ @param EndpointNo Endpoint Number\r
+ @param Status Transfer Status\r
+\r
+ @retval EFI_NOT_FOUND Can't find the Endpoint\r
+ @retval EFI_DEVICE_ERROR Hardware error\r
+ @retval EFI_SUCCESS Success\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
UsbClearEndpointHalt (\r