* Universal Host Controller Interface data structures and defines\r
*/\r
\r
-#include <IndustryStandard/Pci22.h>\r
+#include <IndustryStandard/pci22.h>\r
\r
-#define EFI_D_UHCI EFI_D_INFO\r
+#define EFI_D_UHCI EFI_D_INFO\r
\r
//\r
// stall time\r
//\r
// 50 ms\r
//\r
-#define INTERRUPT_POLLING_TIME 50 * 1000 * 10\r
+#define INTERRUPT_POLLING_TIME 50 * 1000 * 10\r
\r
//\r
// UHCI IO Space Address Register Register locates at\r
// offset 20 ~ 23h of PCI Configuration Space (UHCI spec, Revision 1.1),\r
// so, its BAR Index is 4.\r
//\r
-#define USB_BAR_INDEX 4\r
+#define USB_BAR_INDEX 4\r
\r
//\r
// One memory block uses 1 page (common buffer for QH,TD use.)\r
//\r
#define NORMAL_MEMORY_BLOCK_UNIT_IN_PAGES 1\r
\r
-\r
-#define bit(a) 1 << (a)\r
+#define bit(a) (1 << (a))\r
\r
//\r
// ////////////////////////////////////////////////////////////////////////\r
#define USBCMD_MAXP bit (7) /* Max Packet (0 = 32, 1 = 64) */\r
\r
/* Status register */\r
-#define USBSTS 2 /* Status Register Offset 02-03h */\r
-#define USBSTS_USBINT bit (0) /* Interrupt due to IOC */\r
-#define USBSTS_ERROR bit (1) /* Interrupt due to error */\r
-#define USBSTS_RD bit (2) /* Resume Detect */\r
-#define USBSTS_HSE bit (3) /* Host System Error*/\r
-#define USBSTS_HCPE bit (4) /* Host Controller Process Error*/\r
-#define USBSTS_HCH bit (5) /* HC Halted */\r
+#define USBSTS 2 /* Status Register Offset 02-03h */\r
+#define USBSTS_USBINT bit (0) /* Interrupt due to IOC */\r
+#define USBSTS_ERROR bit (1) /* Interrupt due to error */\r
+#define USBSTS_RD bit (2) /* Resume Detect */\r
+#define USBSTS_HSE bit (3) /* Host System Error*/\r
+#define USBSTS_HCPE bit (4) /* Host Controller Process Error*/\r
+#define USBSTS_HCH bit (5) /* HC Halted */\r
\r
/* Interrupt enable register */\r
#define USBINTR 4 /* Interrupt Enable Register 04-05h */\r
#define USBINTR_SP bit (3) /* Short packet interrupt enable */\r
\r
/* Frame Number Register Offset 06-08h */\r
-#define USBFRNUM 6\r
+#define USBFRNUM 6\r
\r
/* Frame List Base Address Register Offset 08-0Bh */\r
-#define USBFLBASEADD 8\r
+#define USBFLBASEADD 8\r
\r
/* Start of Frame Modify Register Offset 0Ch */\r
-#define USBSOF 0x0c\r
+#define USBSOF 0x0c\r
\r
/* USB port status and control registers */\r
#define USBPORTSC1 0x10 /*Port 1 offset 10-11h */\r
//\r
// Class Code Register offset\r
//\r
-#define CLASSC 0x09\r
+#define CLASSC 0x09\r
//\r
// USB IO Space Base Address Register offset\r
//\r
-#define USBBASE 0x20\r
+#define USBBASE 0x20\r
\r
//\r
// USB legacy Support\r
//\r
-#define USB_EMULATION 0xc0\r
+#define USB_EMULATION 0xc0\r
\r
//\r
// USB Base Class Code,Sub-Class Code and Programming Interface.\r
//\r
//////////////////////////////////////////////////////////////////////////\r
#define USB_HC_DEV_FROM_THIS(a) CR (a, USB_HC_DEV, UsbHc, USB_HC_DEV_SIGNATURE)\r
+#define USB2_HC_DEV_FROM_THIS(a) CR (a, USB_HC_DEV, Usb2Hc, USB_HC_DEV_SIGNATURE)\r
\r
#define USB_HC_DEV_SIGNATURE EFI_SIGNATURE_32 ('u', 'h', 'c', 'i')\r
#define INTERRUPT_LIST_SIGNATURE EFI_SIGNATURE_32 ('i', 'n', 't', 's')\r
typedef struct {\r
UINTN Signature;\r
EFI_USB_HC_PROTOCOL UsbHc;\r
+ EFI_USB2_HC_PROTOCOL Usb2Hc;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
\r
//\r
extern EFI_DRIVER_BINDING_PROTOCOL gUhciDriverBinding;\r
extern EFI_COMPONENT_NAME_PROTOCOL gUhciComponentName;\r
\r
+//\r
+// EFI Component Name Functions\r
+//\r
+EFI_STATUS\r
+EFIAPI\r
+UhciComponentNameGetDriverName (\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **DriverName\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UhciComponentNameGetControllerName (\r
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_HANDLE ChildHandle, OPTIONAL\r
+ IN CHAR8 *Language,\r
+ OUT CHAR16 **ControllerName\r
+ );\r
+\r
EFI_STATUS\r
WriteUHCCommandReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 CmdAddrOffset,\r
IN UINT16 UsbCmd\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Write UHCI Command Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ CmdAddrOffset - Command address offset\r
+ UsbCmd - Data to write\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
ReadUHCCommandReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 CmdAddrOffset,\r
IN OUT UINT16 *Data\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Read UHCI Command Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ CmdAddrOffset - Command address offset\r
+ Data - Data to return\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
WriteUHCStatusReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 StatusAddrOffset,\r
IN UINT16 UsbSts\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Write UHCI Staus Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ StatusAddrOffset - Status address offset\r
+ UsbSts - Data to write\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
ReadUHCStatusReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 StatusAddrOffset,\r
IN OUT UINT16 *Data\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Read UHCI Staus Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ StatusAddrOffset - Status address offset\r
+ UsbSts - Data to return\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
ClearStatusReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 StatusAddrOffset\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Clear the content of UHC's Status Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ StatusAddrOffset - Status address offset\r
+ \r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
ReadUHCFrameNumberReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 FrameNumAddrOffset,\r
IN OUT UINT16 *Data\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Read from UHC's Frame Number Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ FrameNumAddrOffset - Frame number register offset\r
+ Data - Data to return \r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
WriteUHCFrameListBaseReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 FlBaseAddrOffset,\r
IN UINT32 UsbFrameListBaseAddr\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Write to UHC's Frame List Base Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ FlBaseAddrOffset - Frame Base address register\r
+ UsbFrameListBaseAddr - Address to write\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
ReadRootPortReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 PortAddrOffset,\r
IN OUT UINT16 *Data\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Read from UHC's Root Port Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ PortAddrOffset - Port Addrress Offset,\r
+ Data - Data to return\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
WriteRootPortReg (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 PortAddrOffset,\r
IN UINT16 ControlBits\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Write to UHC's Root Port Register\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ PortAddrOffset - Port Addrress Offset,\r
+ ControlBits - Data to write\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
WaitForUHCHalt (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 StatusRegAddr,\r
IN UINTN Timeout\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Wait until UHCI halt or timeout\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ StatusRegAddr - Status Register Address\r
+ Timeout - Time out value in us\r
+\r
+Returns:\r
+\r
+ EFI_DEVICE_ERROR - Unable to read the status register\r
+ EFI_TIMEOUT - Time out\r
+ EFI_SUCCESS - Success\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsStatusOK (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 StatusRegAddr\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Judge whether the host controller operates well\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ StatusRegAddr - Status register address\r
+\r
+Returns:\r
+\r
+ TRUE - Status is good\r
+ FALSE - Status is bad\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsHostSysOrProcessErr (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 StatusRegAddr\r
- );\r
+ )\r
+/*++\r
\r
-//\r
-// This routine programs the USB frame number register. We assume that the\r
-// HC schedule execution is stopped.\r
-//\r
-EFI_STATUS\r
-SetFrameNumberReg (\r
- IN EFI_PCI_IO_PROTOCOL *PciIo,\r
- IN UINT32 FRNUMAddr,\r
- IN UINT16 Index\r
- );\r
+Routine Description:\r
+\r
+ Judge the status is HostSys,ProcessErr error or good\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ StatusRegAddr - Status register address\r
+\r
+Returns:\r
+\r
+ TRUE - Status is good\r
+ FALSE - Status is bad\r
+\r
+--*/\r
+;\r
\r
UINT16\r
GetCurrentFrameNumber (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
- IN UINT32 FRNUMAddr\r
- );\r
+ IN UINT32 FrameNumAddrOffset\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get Current Frame Number\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ FrameNumAddrOffset - FrameNum register AddrOffset\r
+\r
+Returns:\r
+\r
+ Frame number \r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
SetFrameListBaseAddress (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 FLBASEADDRReg,\r
IN UINT32 Addr\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set FrameListBase Address\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ FlBaseAddrReg - FrameListBase register\r
+ Addr - Address to set\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS\r
+\r
+--*/\r
+;\r
\r
UINT32\r
GetFrameListBaseAddress (\r
IN EFI_PCI_IO_PROTOCOL *PciIo,\r
IN UINT32 FLBAddr\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get Current Frame Number\r
+\r
+Arguments:\r
+\r
+ PciIo - EFI_PCI_IO_PROTOCOL\r
+ FrameNumAddrOffset - FrameNum register AddrOffset\r
+\r
+Returns:\r
+\r
+ Frame number \r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
CreateFrameList (\r
IN USB_HC_DEV *HcDev,\r
IN UINT32 FLBASEADDRReg\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ CreateFrameList\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ FlBaseAddrReg - Frame List register\r
+\r
+Returns:\r
+\r
+ EFI_OUT_OF_RESOURCES - Can't allocate memory resources\r
+ EFI_UNSUPPORTED - Map memory fail\r
+ EFI_SUCCESS - Success\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
FreeFrameListEntry (\r
IN USB_HC_DEV *UhcDev\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Free FrameList buffer\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS - success\r
+\r
+--*/\r
+;\r
\r
VOID\r
InitFrameList (\r
IN USB_HC_DEV *HcDev\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Initialize FrameList\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+\r
+Returns:\r
+ VOID\r
\r
+--*/\r
+;\r
\r
EFI_STATUS\r
CreateQH (\r
IN USB_HC_DEV *HcDev,\r
OUT QH_STRUCT **pptrQH\r
- );\r
+ )\r
+/*++\r
\r
-VOID\r
+Routine Description:\r
+\r
+ CreateQH\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ pptrQH - QH_STRUCT content to return\r
+Returns:\r
+\r
+ EFI_SUCCESS - Success\r
+ EFI_OUT_OF_RESOURCES - Can't allocate memory\r
+ \r
+--*/\r
+;\r
+\r
+VOID\r
SetQHHorizontalLinkPtr (\r
IN QH_STRUCT *ptrQH,\r
IN VOID *ptrNext\r
- );\r
+ )\r
+/*++\r
\r
-VOID *\r
+Routine Description:\r
+\r
+ Set QH Horizontal Link Pointer\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ ptrNext - Data to write \r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID *\r
GetQHHorizontalLinkPtr (\r
IN QH_STRUCT *ptrQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get QH Horizontal Link Pointer\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ \r
+\r
+Returns:\r
+\r
+ Data to return \r
+\r
+--*/\r
+;\r
\r
VOID\r
SetQHHorizontalQHorTDSelect (\r
IN QH_STRUCT *ptrQH,\r
IN BOOLEAN bQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set QH Horizontal QH or TD \r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ bQH - TRUE is QH FALSE is TD\r
+\r
+Returns:\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetQHHorizontalValidorInvalid (\r
IN QH_STRUCT *ptrQH,\r
IN BOOLEAN bValid\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set QH Horizontal Valid or Invalid\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ bValid - TRUE is Valid FALSE is Invalid\r
+\r
+Returns:\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetQHVerticalLinkPtr (\r
IN QH_STRUCT *ptrQH,\r
IN VOID *ptrNext\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set QH Vertical Link Pointer\r
+ \r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ ptrNext - Data to write\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
-VOID * \r
+VOID *\r
GetQHVerticalLinkPtr (\r
IN QH_STRUCT *ptrQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get QH Vertical Link Pointer\r
+ \r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ \r
+Returns:\r
+\r
+ Data to return\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetQHVerticalQHorTDSelect (\r
IN QH_STRUCT *ptrQH,\r
IN BOOLEAN bQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set QH Vertical QH or TD\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ bQH - TRUE is QH FALSE is TD\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsQHHorizontalQHSelect (\r
IN QH_STRUCT *ptrQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Is QH Horizontal QH Select\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ \r
+Returns:\r
+\r
+ TRUE - QH\r
+ FALSE - TD\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetQHVerticalValidorInvalid (\r
IN QH_STRUCT *ptrQH,\r
IN BOOLEAN bValid\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set QH Vertical Valid or Invalid\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ IsValid - TRUE is valid FALSE is invalid\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
GetQHVerticalValidorInvalid (\r
IN QH_STRUCT *ptrQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get QH Vertical Valid or Invalid\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Valid\r
+ FALSE - Invalid\r
+\r
+--*/\r
+;\r
\r
EFI_STATUS\r
AllocateTDStruct (\r
IN USB_HC_DEV *HcDev,\r
OUT TD_STRUCT **ppTDStruct\r
- );\r
+ )\r
/*++\r
\r
Routine Description:\r
EFI_SUCCESS\r
\r
--*/\r
+;\r
\r
EFI_STATUS\r
CreateTD (\r
IN USB_HC_DEV *HcDev,\r
OUT TD_STRUCT **pptrTD\r
- );\r
+ )\r
/*++\r
\r
Routine Description:\r
EFI_SUCCESS - Success\r
\r
--*/\r
+;\r
\r
\r
EFI_STATUS\r
IN UINT8 *pDevReq,\r
IN UINT8 RequestLen,\r
OUT TD_STRUCT **ppTD\r
- );\r
+ )\r
/*++\r
\r
Routine Description:\r
EFI_SUCCESS - Success\r
\r
--*/\r
+;\r
\r
EFI_STATUS\r
GenDataTD (\r
IN UINT8 Toggle,\r
IN BOOLEAN bSlow,\r
OUT TD_STRUCT **ppTD\r
- );\r
+ )\r
/*++\r
\r
Routine Description:\r
EFI_SUCCESS - Success\r
\r
--*/\r
+;\r
\r
EFI_STATUS\r
CreateStatusTD (\r
IN UINT8 PktID,\r
IN BOOLEAN bSlow,\r
OUT TD_STRUCT **ppTD\r
- );\r
+ )\r
/*++\r
\r
Routine Description:\r
EFI_SUCCESS - Success\r
\r
--*/\r
+;\r
\r
VOID\r
SetTDLinkPtrValidorInvalid (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bValid\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Link Pointer Valid or Invalid\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - TD_STRUCT\r
+ bValid - TRUE is valid FALSE is invalid\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDLinkPtrQHorTDSelect (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Link Pointer QH or TD Select\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - TD_STRUCT\r
+ bQH - TRUE is QH FALSE is TD\r
+ \r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDLinkPtrDepthorBreadth (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bDepth\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Link Pointer depth or bread priority\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - TD_STRUCT\r
+ bDepth - TRUE is Depth FALSE is Breadth\r
+ \r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDLinkPtr (\r
IN TD_STRUCT *ptrTDStruct,\r
IN VOID *ptrNext\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Link Pointer\r
+\r
+Arguments:\r
\r
-VOID *\r
+ ptrTDStruct - TD_STRUCT\r
+ ptrNext - Pointer to set\r
+ \r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID *\r
GetTDLinkPtr (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD Link Pointer\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - TD_STRUCT\r
+ \r
+Returns:\r
+\r
+ Pointer to get\r
+\r
+--*/\r
+;\r
\r
VOID\r
EnableorDisableTDShortPacket (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bEnable\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Enable or Disable TD ShortPacket\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - TD_STRUCT\r
+ bEnable - TRUE is Enanble FALSE is Disable\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDControlErrorCounter (\r
IN TD_STRUCT *ptrTDStruct,\r
IN UINT8 nMaxErrors\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Control ErrorCounter\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - TD_STRUCT\r
+ nMaxErrors - Error counter number\r
+ \r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDLoworFullSpeedDevice (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bLowSpeedDevice\r
- );\r
+ )\r
+/*++\r
\r
-VOID\r
-SetTDControlIsochronousorNot (\r
- IN TD_STRUCT *ptrTDStruct,\r
- IN BOOLEAN bIsochronous\r
- );\r
+Routine Description:\r
\r
-VOID\r
+ Set TD status low speed or full speed\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ bLowSpeedDevice - Show low speed or full speed\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+SetTDControlIsochronousorNot (\r
+ IN TD_STRUCT *ptrTDStruct,\r
+ IN BOOLEAN bIsochronous\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD status Isochronous or not\r
+ \r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ IsIsochronous - Show Isochronous or not\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
SetorClearTDControlIOC (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bSet\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD status IOC IsSet\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ IsSet - Show IOC set or not\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDStatusActiveorInactive (\r
IN TD_STRUCT *ptrTDStruct,\r
IN BOOLEAN bActive\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD status active or not\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ IsActive - Active or not\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
UINT16\r
SetTDTokenMaxLength (\r
IN TD_STRUCT *ptrTDStruct,\r
IN UINT16 nMaxLen\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Token maxlength\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ MaximumLength - Maximum length of TD Token\r
+\r
+Returns:\r
+\r
+ Real maximum length set to TD Token\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDTokenDataToggle1 (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Token data toggle1\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDTokenDataToggle0 (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Token data toggle0\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
UINT8\r
GetTDTokenDataToggle (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD Token data toggle\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ data toggle value\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDTokenEndPoint (\r
IN TD_STRUCT *ptrTDStruct,\r
IN UINTN nEndPoint\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set Data Token endpoint number\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ EndPoint - End point number\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDTokenDeviceAddress (\r
IN TD_STRUCT *ptrTDStruct,\r
IN UINTN nDevAddr\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Token device address\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ DeviceAddress - Device address\r
+\r
+Returns:\r
+\r
+ VOID\r
+ \r
+--*/\r
+;\r
\r
VOID\r
SetTDTokenPacketID (\r
IN TD_STRUCT *ptrTDStruct,\r
IN UINT8 nPID\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD Token packet ID\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ PID - Packet ID\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetTDDataBuffer (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set TD data buffer\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusActive (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status active or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Active\r
+ FALSE - Inactive \r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusStalled (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status stalled or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Stalled\r
+ FALSE - not stalled\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusBufferError (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status buffer error or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Buffer error\r
+ FALSE - No error\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusBabbleError (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status babble error or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Babble error\r
+ FALSE - No error\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusNAKReceived (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status NAK received\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - NAK received\r
+ FALSE - NAK not received\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusCRCTimeOutError (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status CRC timeout error or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+ \r
+Returns:\r
+\r
+ TRUE - CRC timeout error\r
+ FALSE - CRC timeout no error\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
IsTDStatusBitStuffError (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Indicate whether TD status bit stuff error or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Bit stuff error\r
+ FALSE - Bit stuff no error\r
+\r
+--*/\r
+;\r
\r
UINT16\r
GetTDStatusActualLength (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD status length\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return Td status length\r
+\r
+--*/\r
+;\r
\r
UINT16\r
GetTDTokenMaxLength (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD Token maximum length\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return TD token maximum length\r
+\r
+--*/\r
+;\r
\r
UINT8\r
GetTDTokenEndPoint (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD Token endpoint number\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return TD Token endpoint number\r
+\r
+--*/\r
+;\r
\r
UINT8\r
GetTDTokenDeviceAddress (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD Token device address\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return TD Token device address\r
+\r
+--*/\r
+;\r
\r
UINT8\r
GetTDTokenPacketID (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD Token packet ID\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return TD Token packet ID\r
+\r
+--*/\r
+;\r
\r
-UINT8 *\r
+UINT8 *\r
GetTDDataBuffer (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get the point to TD data buffer\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return a point to TD data buffer\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
GetTDLinkPtrValidorInvalid (\r
IN TD_STRUCT *ptrTDStruct\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get TD LinkPtr valid or not\r
+\r
+Arguments:\r
+\r
+ ptrTDStruct - A point to TD_STRUCT\r
+\r
+Returns:\r
+\r
+ TRUE - Invalid\r
+ FALSE - Valid\r
+\r
+--*/\r
+;\r
\r
UINTN\r
CountTDsNumber (\r
IN TD_STRUCT *ptrFirstTD\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get the number of TDs\r
+\r
+Arguments:\r
+\r
+ PtrFirstTD - A point to the first TD_STRUCT\r
+\r
+Returns:\r
+\r
+ Return the number of TDs\r
+\r
+--*/\r
+;\r
\r
VOID\r
LinkTDToQH (\r
IN QH_STRUCT *ptrQH,\r
IN TD_STRUCT *ptrTD\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Link TD To QH\r
+\r
+Arguments:\r
+\r
+ PtrQH - QH_STRUCT\r
+ PtrTD - TD_STRUCT\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
LinkTDToTD (\r
IN TD_STRUCT *ptrPreTD,\r
IN TD_STRUCT *ptrTD\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Link TD To TD\r
+\r
+Arguments:\r
+\r
+ ptrPreTD - Previous TD_STRUCT to be linked\r
+ PtrTD - TD_STRUCT to link\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetorClearCurFrameListTerminate (\r
IN FRAMELIST_ENTRY *pCurEntry,\r
IN BOOLEAN bSet\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set or clear current framelist terminate\r
+\r
+Arguments:\r
+\r
+ pCurEntry - A point to FRAMELIST_ENTITY\r
+ IsSet - TRUE to empty the frame and indicate the Pointer field is valid\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetCurFrameListQHorTD (\r
IN FRAMELIST_ENTRY *pCurEntry,\r
IN BOOLEAN bQH\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set current framelist QH or TD\r
+\r
+Arguments:\r
+\r
+ pCurEntry - A point to FRAMELIST_ENTITY\r
+ IsQH - TRUE to set QH and FALSE to set TD\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
BOOLEAN\r
GetCurFrameListTerminate (\r
IN FRAMELIST_ENTRY *pCurEntry\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get current framelist terminate\r
+\r
+Arguments:\r
+\r
+ pCurEntry - A point to FRAMELIST_ENTITY\r
+\r
+Returns:\r
+\r
+ TRUE - Terminate\r
+ FALSE - Not terminate\r
+\r
+--*/\r
+;\r
\r
VOID\r
SetCurFrameListPointer (\r
IN FRAMELIST_ENTRY *pCurEntry,\r
IN UINT8 *ptr\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Set current framelist pointer\r
\r
-VOID *\r
+Arguments:\r
+\r
+ pCurEntry - A point to FRAMELIST_ENTITY\r
+ ptr - A point to FrameListPtr point to\r
+\r
+Returns:\r
+\r
+ VOID\r
+ \r
+--*/\r
+;\r
+\r
+VOID *\r
GetCurFrameListPointer (\r
IN FRAMELIST_ENTRY *pCurEntry\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Get current framelist pointer\r
+\r
+Arguments:\r
+\r
+ pCurEntry - A point to FRAMELIST_ENTITY\r
+\r
+Returns:\r
+\r
+ A point FrameListPtr point to\r
+\r
+--*/\r
+;\r
\r
VOID\r
LinkQHToFrameList (\r
IN FRAMELIST_ENTRY *pEntry,\r
IN UINT16 FrameListIndex,\r
IN QH_STRUCT *ptrQH\r
- );\r
+ )\r
/*++\r
\r
Routine Description:\r
VOID\r
\r
--*/\r
-VOID\r
-DeleteQHTDs (\r
- IN FRAMELIST_ENTRY *pEntry,\r
- IN QH_STRUCT *ptrQH,\r
- IN TD_STRUCT *ptrFirstTD,\r
- IN UINT16 FrameListIndex,\r
- IN BOOLEAN SearchOther\r
- );\r
+;\r
\r
VOID\r
DelLinkSingleQH (\r
IN UINT16 FrameListIndex,\r
IN BOOLEAN SearchOther,\r
IN BOOLEAN Delete\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Unlink from frame list and delete single QH\r
+ \r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ PtrQH - QH_STRUCT\r
+ FrameListIndex - Frame List Index\r
+ SearchOther - Search Other QH\r
+ Delete - TRUE is to delete the QH\r
+ \r
+Returns:\r
+\r
+ VOID\r
+ \r
+--*/\r
+;\r
\r
VOID\r
DeleteQueuedTDs (\r
IN USB_HC_DEV *HcDev,\r
IN TD_STRUCT *ptrFirstTD\r
- );\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Delete Queued TDs\r
+ \r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ PtrFirstTD - TD link list head\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
\r
VOID\r
InsertQHTDToINTList (\r
IN UINT8 *DataBuffer,\r
IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction,\r
IN VOID *Context\r
- );\r
+ )\r
/*++\r
Routine Description:\r
+\r
Insert QH and TD To Interrupt List\r
+\r
Arguments:\r
\r
HcDev - USB_HC_DEV\r
DataBuffer - Data buffer\r
CallBackFunction- CallBackFunction after interrupt transfeer\r
Context - CallBackFunction Context passed as function parameter\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS - Sucess\r
+ EFI_INVALID_PARAMETER - Paremeter is error \r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+DeleteAsyncINTQHTDs (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ OUT UINT8 *DataToggle\r
+ )\r
+/*++\r
+Routine Description:\r
+\r
+ Delete Async INT QH and TDs\r
+ \r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ DeviceAddress - Device Address\r
+ EndPointAddress - EndPoint Address\r
+ DataToggle - Data Toggle\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS - Sucess\r
+ EFI_INVALID_PARAMETER - Paremeter is error \r
+\r
+--*/\r
+;\r
+\r
+BOOLEAN\r
+CheckTDsResults (\r
+ IN TD_STRUCT *ptrTD,\r
+ IN UINTN RequiredLen,\r
+ OUT UINT32 *Result,\r
+ OUT UINTN *ErrTDPos,\r
+ OUT UINTN *ActualTransferSize\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Check TDs Results\r
+\r
+Arguments:\r
+\r
+ PtrTD - TD_STRUCT to check\r
+ RequiredLen - Required Len\r
+ Result - Transfer result\r
+ ErrTDPos - Error TD Position\r
+ ActualTransferSize - Actual Transfer Size\r
+\r
+Returns:\r
+\r
+ TRUE - Sucess\r
+ FALSE - Fail\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+ExecuteAsyncINTTDs (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN INTERRUPT_LIST *ptrList,\r
+ OUT UINT32 *Result,\r
+ OUT UINTN *ErrTDPos,\r
+ OUT UINTN *ActualLen\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Execute Async Interrupt TDs\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ PtrList - INTERRUPT_LIST\r
+ Result - Transfer result\r
+ ErrTDPos - Error TD Position\r
+ ActualTransferSize - Actual Transfer Size\r
+ \r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+UpdateAsyncINTQHTDs (\r
+ IN INTERRUPT_LIST *ptrList,\r
+ IN UINT32 Result,\r
+ IN UINT32 ErrTDPos\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Update Async Interrupt QH and TDs\r
+\r
+Arguments:\r
+\r
+ PtrList - INTERRUPT_LIST\r
+ Result - Transfer reslut\r
+ ErrTDPos - Error TD Position\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+ReleaseInterruptList (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN LIST_ENTRY *ListHead\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Release Interrupt List\r
+ \r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ ListHead - List head\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+ExecuteControlTransfer (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN TD_STRUCT *ptrTD,\r
+ IN UINT32 wIndex,\r
+ OUT UINTN *ActualLen,\r
+ IN UINTN TimeOut,\r
+ OUT UINT32 *TransferResult\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Execute Control Transfer\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ PtrTD - TD_STRUCT\r
+ wIndex - No use\r
+ ActualLen - Actual transfered Len \r
+ TimeOut - TimeOut value in milliseconds\r
+ TransferResult - Transfer result\r
+Returns:\r
+\r
+ EFI_SUCCESS - Sucess\r
+ EFI_DEVICE_ERROR - Error\r
+ \r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+ExecBulkorSyncInterruptTransfer (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN TD_STRUCT *ptrTD,\r
+ IN UINT32 wIndex,\r
+ OUT UINTN *ActualLen,\r
+ OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ OUT UINT32 *TransferResult\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Execute Bulk or SyncInterrupt Transfer\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ PtrTD - TD_STRUCT\r
+ wIndex - No use\r
+ ActualLen - Actual transfered Len \r
+ DataToggle - Data Toggle\r
+ TimeOut - TimeOut value in milliseconds\r
+ TransferResult - Transfer result\r
+Returns:\r
+\r
+ EFI_SUCCESS - Sucess\r
+ EFI_DEVICE_ERROR - Error\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+InitializeMemoryManagement (\r
+ IN USB_HC_DEV *HcDev\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Initialize Memory Management\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS - Success\r
+ \r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+CreateMemoryBlock (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN MEMORY_MANAGE_HEADER **MemoryHeader,\r
+ IN UINTN MemoryBlockSizeInPages\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Use PciIo->AllocateBuffer to allocate common buffer for the memory block,\r
+ and use PciIo->Map to map the common buffer for Bus Master Read/Write.\r
+\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ MemoryHeader - MEMORY_MANAGE_HEADER to output\r
+ MemoryBlockSizeInPages - MemoryBlockSizeInPages\r
+ \r
+Returns:\r
+\r
+ EFI_SUCCESS - Success\r
+ EFI_OUT_OF_RESOURCES - Out of resources\r
+ EFI_UNSUPPORTED - Unsupported\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+FreeMemoryHeader (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN MEMORY_MANAGE_HEADER *MemoryHeader\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Free Memory Header\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ MemoryHeader - MemoryHeader to be freed\r
+\r
+Returns:\r
+\r
+ EFI_INVALID_PARAMETER - Parameter is error\r
+ EFI_SUCCESS - Success\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+UhciAllocatePool (\r
+ IN USB_HC_DEV *UhcDev,\r
+ IN UINT8 **Pool,\r
+ IN UINTN AllocSize\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Uhci Allocate Pool\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ Pool - Place to store pointer to the memory buffer\r
+ AllocSize - Alloc Size\r
+\r
+Returns:\r
+\r
+ EFI_SUCCESS - Success\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+UhciFreePool (\r
+ IN USB_HC_DEV *HcDev,\r
+ IN UINT8 *Pool,\r
+ IN UINTN AllocSize\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Uhci Free Pool\r
+\r
+Arguments:\r
+\r
+ HcDev - USB_HC_DEV\r
+ Pool - Pool to free\r
+ AllocSize - Pool size\r
+\r
+Returns:\r
+\r
+ VOID\r
+\r
+--*/\r
+;\r
+\r
+VOID\r
+InsertMemoryHeaderToList (\r
+ IN MEMORY_MANAGE_HEADER *MemoryHeader,\r
+ IN MEMORY_MANAGE_HEADER *NewMemoryHeader\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Insert Memory Header To List\r
+\r
+Arguments:\r
+\r
+ MemoryHeader - MEMORY_MANAGE_HEADER\r
+ NewMemoryHeader - MEMORY_MANAGE_HEADER\r
+\r
Returns:\r
- EFI_SUCCESS - Sucess\r
- EFI_INVALID_PARAMETER - Paremeter is error \r
+\r
+ VOID\r
\r
--*/\r
+;\r
\r
EFI_STATUS\r
-DeleteAsyncINTQHTDs (\r
- IN USB_HC_DEV *HcDev,\r
- IN UINT8 DeviceAddress,\r
- IN UINT8 EndPointAddress,\r
- OUT UINT8 *DataToggle\r
- );\r
+AllocMemInMemoryBlock (\r
+ IN MEMORY_MANAGE_HEADER *MemoryHeader,\r
+ IN VOID **Pool,\r
+ IN UINTN NumberOfMemoryUnit\r
+ )\r
/*++\r
+\r
Routine Description:\r
\r
- Delete Async INT QH and TDs\r
+ Alloc Memory In MemoryBlock\r
+\r
Arguments:\r
\r
- HcDev - USB_HC_DEV\r
- DeviceAddress - Device Address\r
- EndPointAddress - EndPoint Address\r
- DataToggle - Data Toggle\r
+ MemoryHeader - MEMORY_MANAGE_HEADER\r
+ Pool - Place to store pointer to memory\r
+ NumberOfMemoryUnit - Number Of Memory Unit\r
\r
Returns:\r
- EFI_SUCCESS - Sucess\r
- EFI_INVALID_PARAMETER - Paremeter is error \r
+\r
+ EFI_NOT_FOUND - Can't find the free memory \r
+ EFI_SUCCESS - Success\r
\r
--*/\r
+;\r
+\r
BOOLEAN\r
-CheckTDsResults (\r
- IN TD_STRUCT *ptrTD,\r
- IN UINTN RequiredLen,\r
- OUT UINT32 *Result,\r
- OUT UINTN *ErrTDPos,\r
- OUT UINTN *ActualTransferSize\r
- );\r
+IsMemoryBlockEmptied (\r
+ IN MEMORY_MANAGE_HEADER *MemoryHeaderPtr\r
+ )\r
/*++\r
\r
Routine Description:\r
\r
- Check TDs Results\r
+ Is Memory Block Emptied\r
\r
Arguments:\r
\r
- PtrTD - TD_STRUCT to check\r
- RequiredLen - Required Len\r
- Result - Transfer result\r
- ErrTDPos - Error TD Position\r
- ActualTransferSize - Actual Transfer Size\r
+ MemoryHeaderPtr - MEMORY_MANAGE_HEADER\r
\r
Returns:\r
\r
- TRUE - Sucess\r
- FALSE - Fail\r
+ TRUE - Empty\r
+ FALSE - Not Empty \r
\r
--*/\r
+;\r
+\r
VOID\r
-ExecuteAsyncINTTDs (\r
- IN USB_HC_DEV *HcDev,\r
- IN INTERRUPT_LIST *ptrList,\r
- OUT UINT32 *Result,\r
- OUT UINTN *ErrTDPos,\r
- OUT UINTN *ActualLen\r
- ) ;\r
+DelinkMemoryBlock (\r
+ IN MEMORY_MANAGE_HEADER *FirstMemoryHeader,\r
+ IN MEMORY_MANAGE_HEADER *FreeMemoryHeader\r
+ )\r
/*++\r
\r
Routine Description:\r
\r
- Execute Async Interrupt TDs\r
+ Delink Memory Block\r
\r
Arguments:\r
\r
- HcDev - USB_HC_DEV\r
- PtrList - INTERRUPT_LIST\r
- Result - Transfer result\r
- ErrTDPos - Error TD Position\r
- ActualTransferSize - Actual Transfer Size\r
- \r
+ FirstMemoryHeader - MEMORY_MANAGE_HEADER\r
+ NeedFreeMemoryHeader - MEMORY_MANAGE_HEADER\r
+\r
Returns:\r
\r
VOID\r
\r
--*/\r
-VOID\r
-UpdateAsyncINTQHTDs (\r
- IN INTERRUPT_LIST *ptrList,\r
- IN UINT32 Result,\r
- IN UINT32 ErrTDPos\r
- );\r
+;\r
+\r
+EFI_STATUS\r
+DelMemoryManagement (\r
+ IN USB_HC_DEV *HcDev\r
+ )\r
/*++\r
\r
Routine Description:\r
\r
- Update Async Interrupt QH and TDs\r
+ Delete Memory Management\r
\r
Arguments:\r
\r
- PtrList - INTERRUPT_LIST\r
- Result - Transfer reslut\r
- ErrTDPos - Error TD Position\r
+ HcDev - USB_HC_DEV\r
\r
Returns:\r
\r
- VOID\r
+ EFI_SUCCESS - Success\r
\r
--*/\r
+;\r
+\r
VOID\r
-ReleaseInterruptList (\r
- IN USB_HC_DEV *HcDev,\r
- IN LIST_ENTRY *ListHead\r
- );\r
+EnableMaxPacketSize (\r
+ IN USB_HC_DEV *HcDev\r
+ )\r
/*++\r
\r
Routine Description:\r
\r
- Release Interrupt List\r
+ Enable Max Packet Size\r
+\r
Arguments:\r
\r
- HcDev - USB_HC_DEV\r
- ListHead - List head\r
+ HcDev - USB_HC_DEV\r
\r
Returns:\r
\r
VOID\r
\r
--*/\r
-EFI_STATUS\r
-ExecuteControlTransfer (\r
- IN USB_HC_DEV *HcDev,\r
- IN TD_STRUCT *ptrTD,\r
- IN UINT32 wIndex,\r
- OUT UINTN *ActualLen,\r
- IN UINTN TimeOut,\r
- OUT UINT32 *TransferResult\r
- );\r
+;\r
+\r
+VOID\r
+CleanUsbTransactions (\r
+ IN USB_HC_DEV *HcDev\r
+ )\r
/*++\r
\r
Routine Description:\r
\r
- Execute Control Transfer\r
+ Clean USB Transactions\r
\r
Arguments:\r
\r
- HcDev - USB_HC_DEV\r
- PtrTD - TD_STRUCT\r
- wIndex - No use\r
- ActualLen - Actual transfered Len \r
- TimeOut - TimeOut value in milliseconds\r
- TransferResult - Transfer result\r
+ HcDev - A point to USB_HC_DEV\r
+\r
Returns:\r
\r
- EFI_SUCCESS - Sucess\r
- EFI_DEVICE_ERROR - Error\r
- \r
+ VOID\r
\r
--*/\r
-EFI_STATUS\r
-ExecBulkorSyncInterruptTransfer (\r
- IN USB_HC_DEV *HcDev,\r
- IN TD_STRUCT *ptrTD,\r
- IN UINT32 wIndex,\r
- OUT UINTN *ActualLen,\r
- OUT UINT8 *DataToggle,\r
- IN UINTN TimeOut,\r
- OUT UINT32 *TransferResult\r
- );\r
+;\r
+\r
+VOID\r
+TurnOffUSBEmulation (\r
+ IN EFI_PCI_IO_PROTOCOL *PciIo\r
+ )\r
/*++\r
\r
Routine Description:\r
\r
- Execute Bulk or SyncInterrupt Transfer\r
+ Set current framelist QH or TD\r
\r
Arguments:\r
\r
- HcDev - USB_HC_DEV\r
- PtrTD - TD_STRUCT\r
- wIndex - No use\r
- ActualLen - Actual transfered Len \r
- DataToggle - Data Toggle\r
- TimeOut - TimeOut value in milliseconds\r
- TransferResult - Transfer result\r
+ pCurEntry - A point to FRAMELIST_ENTITY\r
+ IsQH - TRUE to set QH and FALSE to set TD\r
+\r
Returns:\r
\r
- EFI_SUCCESS - Sucess\r
- EFI_DEVICE_ERROR - Error\r
+ VOID\r
+\r
--*/\r
+;\r
+\r
+//\r
+// Prototypes\r
+// Driver model protocol interface\r
+//\r
\r
EFI_STATUS\r
-InitializeMemoryManagement (\r
- IN USB_HC_DEV *HcDev\r
+EFIAPI\r
+UHCIDriverBindingSupported (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
EFI_STATUS\r
-CreateMemoryBlock (\r
- IN USB_HC_DEV *HcDev,\r
- IN MEMORY_MANAGE_HEADER **MemoryHeader,\r
- IN UINTN MemoryBlockSizeInPages\r
+EFIAPI\r
+UHCIDriverBindingStart (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
EFI_STATUS\r
-FreeMemoryHeader (\r
- IN USB_HC_DEV *HcDev,\r
- IN MEMORY_MANAGE_HEADER *MemoryHeader\r
+EFIAPI\r
+UHCIDriverBindingStop (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE Controller,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
);\r
\r
+//\r
+// UHCI interface functions\r
+//\r
+\r
EFI_STATUS\r
-UhciAllocatePool (\r
- IN USB_HC_DEV *UhcDev,\r
- IN UINT8 **Pool,\r
- IN UINTN AllocSize\r
+EFIAPI\r
+UHCIReset (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT16 Attributes\r
);\r
\r
-VOID\r
-UhciFreePool (\r
- IN USB_HC_DEV *HcDev,\r
- IN UINT8 *Pool,\r
- IN UINTN AllocSize\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIGetState (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ OUT EFI_USB_HC_STATE *State\r
);\r
\r
-VOID\r
-InsertMemoryHeaderToList (\r
- IN MEMORY_MANAGE_HEADER *MemoryHeader,\r
- IN MEMORY_MANAGE_HEADER *NewMemoryHeader\r
+EFI_STATUS\r
+EFIAPI\r
+UHCISetState (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN EFI_USB_HC_STATE State\r
);\r
\r
EFI_STATUS\r
-AllocMemInMemoryBlock (\r
- IN MEMORY_MANAGE_HEADER *MemoryHeader,\r
- IN VOID **Pool,\r
- IN UINTN NumberOfMemoryUnit\r
+EFIAPI\r
+UHCIControlTransfer (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN BOOLEAN IsSlowDevice,\r
+ IN UINT8 MaximumPacketLength,\r
+ IN EFI_USB_DEVICE_REQUEST *Request,\r
+ IN EFI_USB_DATA_DIRECTION TransferDirection,\r
+ IN OUT VOID *Data, OPTIONAL\r
+ IN OUT UINTN *DataLength, OPTIONAL\r
+ IN UINTN TimeOut,\r
+ OUT UINT32 *TransferResult\r
);\r
\r
-BOOLEAN\r
-IsMemoryBlockEmptied (\r
- IN MEMORY_MANAGE_HEADER *MemoryHeaderPtr\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIBulkTransfer (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 MaximumPacketLength,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ OUT UINT32 *TransferResult\r
);\r
\r
-VOID\r
-DelinkMemoryBlock (\r
- IN MEMORY_MANAGE_HEADER *FirstMemoryHeader,\r
- IN MEMORY_MANAGE_HEADER *FreeMemoryHeader\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIAsyncInterruptTransfer (\r
+ IN EFI_USB_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN BOOLEAN IsSlowDevice,\r
+ IN UINT8 MaximumPacketLength,\r
+ IN BOOLEAN IsNewTransfer,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN PollingInterval, OPTIONAL\r
+ IN UINTN DataLength, OPTIONAL\r
+ IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction, OPTIONAL\r
+ IN VOID *Context OPTIONAL\r
);\r
\r
EFI_STATUS\r
-DelMemoryManagement (\r
- IN USB_HC_DEV *HcDev\r
+EFIAPI\r
+UHCISyncInterruptTransfer (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN BOOLEAN IsSlowDevice,\r
+ IN UINT8 MaximumPacketLength,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ OUT UINT32 *TransferResult\r
);\r
\r
-VOID\r
-EnableMaxPacketSize (\r
- IN USB_HC_DEV *HcDev\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIIsochronousTransfer (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 MaximumPacketLength,\r
+ IN OUT VOID *Data,\r
+ IN UINTN DataLength,\r
+ OUT UINT32 *TransferResult\r
);\r
\r
-VOID\r
-CleanUsbTransactions (\r
- IN USB_HC_DEV *HcDev\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIAsyncIsochronousTransfer (\r
+ IN EFI_USB_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 MaximumPacketLength,\r
+ IN OUT VOID *Data,\r
+ IN UINTN DataLength,\r
+ IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,\r
+ IN VOID *Context OPTIONAL\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIGetRootHubPortNumber (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ OUT UINT8 *PortNumber\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIGetRootHubPortStatus (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 PortNumber,\r
+ OUT EFI_USB_PORT_STATUS *PortStatus\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCISetRootHubPortFeature (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 PortNumber,\r
+ IN EFI_USB_PORT_FEATURE PortFeature\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCIClearRootHubPortFeature (\r
+ IN EFI_USB_HC_PROTOCOL *This,\r
+ IN UINT8 PortNumber,\r
+ IN EFI_USB_PORT_FEATURE PortFeature\r
+ );\r
+\r
+//\r
+// UEFI 2.0 Protocol\r
+//\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2GetCapability(\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ OUT UINT8 *MaxSpeed,\r
+ OUT UINT8 *PortNumber,\r
+ OUT UINT8 *Is64BitCapable\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2Reset (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT16 Attributes\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2GetState (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ OUT EFI_USB_HC_STATE * State\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2SetState (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN EFI_USB_HC_STATE State\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2ControlTransfer (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN EFI_USB_DEVICE_REQUEST * Request,\r
+ IN EFI_USB_DATA_DIRECTION TransferDirection,\r
+ IN OUT VOID *Data, OPTIONAL\r
+ IN OUT UINTN *DataLength, OPTIONAL\r
+ IN UINTN TimeOut,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2BulkTransfer (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN UINT8 DataBuffersNumber,\r
+ IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],\r
+ IN OUT UINTN *DataLength,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2AsyncInterruptTransfer (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN BOOLEAN IsNewTransfer,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN PollingInterval, OPTIONAL\r
+ IN UINTN DataLength, OPTIONAL\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction, OPTIONAL\r
+ IN VOID *Context OPTIONAL\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2SyncInterruptTransfer (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2IsochronousTransfer (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN UINT8 DataBuffersNumber,\r
+ IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM],\r
+ IN UINTN DataLength,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
);\r
\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2AsyncIsochronousTransfer (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN UINT8 DataBuffersNumber,\r
+ IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM],\r
+ IN UINTN DataLength,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,\r
+ IN VOID *Context OPTIONAL\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2GetRootHubPortStatus (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 PortNumber,\r
+ OUT EFI_USB_PORT_STATUS * PortStatus\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2SetRootHubPortFeature (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 PortNumber,\r
+ IN EFI_USB_PORT_FEATURE PortFeature\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UHCI2ClearRootHubPortFeature (\r
+ IN EFI_USB2_HC_PROTOCOL * This,\r
+ IN UINT8 PortNumber,\r
+ IN EFI_USB_PORT_FEATURE PortFeature\r
+ );\r
+\r
+//\r
+// Asynchronous interrupt transfer monitor function\r
+//\r
VOID\r
-TurnOffUSBEmulation (\r
- IN EFI_PCI_IO_PROTOCOL *PciIo\r
+EFIAPI\r
+MonitorInterruptTrans (\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
);\r
\r
#endif\r