| /*++ | |
| Copyright (c) 2006, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: | |
| Uhci.h | |
| Abstract: | |
| Revision History | |
| --*/ | |
| #ifndef _UHCI_H | |
| #define _UHCI_H | |
| /* | |
| * Universal Host Controller Interface data structures and defines | |
| */ | |
| #include <IndustryStandard/pci22.h> | |
| #define EFI_D_UHCI EFI_D_INFO | |
| // | |
| // stall time | |
| // | |
| #define STALL_1_MILLI_SECOND 1000 | |
| #define STALL_1_SECOND 1000 * STALL_1_MILLI_SECOND | |
| #define FORCE_GLOBAL_RESUME_TIME 20 * STALL_1_MILLI_SECOND | |
| #define ROOT_PORT_REST_TIME 50 * STALL_1_MILLI_SECOND | |
| #define PORT_RESET_RECOVERY_TIME 10 * STALL_1_MILLI_SECOND | |
| // | |
| // 50 ms | |
| // | |
| #define INTERRUPT_POLLING_TIME 50 * 1000 * 10 | |
| // | |
| // UHCI IO Space Address Register Register locates at | |
| // offset 20 ~ 23h of PCI Configuration Space (UHCI spec, Revision 1.1), | |
| // so, its BAR Index is 4. | |
| // | |
| #define USB_BAR_INDEX 4 | |
| // | |
| // One memory block uses 1 page (common buffer for QH,TD use.) | |
| // | |
| #define NORMAL_MEMORY_BLOCK_UNIT_IN_PAGES 1 | |
| #define bit(a) (1 << (a)) | |
| // | |
| // //////////////////////////////////////////////////////////////////////// | |
| // | |
| // Universal Host Controller Registers Definitions | |
| // | |
| ////////////////////////////////////////////////////////////////////////// | |
| extern UINT16 USBBaseAddr; | |
| /* Command register */ | |
| #define USBCMD 0 /* Command Register Offset 00-01h */ | |
| #define USBCMD_RS bit (0) /* Run/Stop */ | |
| #define USBCMD_HCRESET bit (1) /* Host reset */ | |
| #define USBCMD_GRESET bit (2) /* Global reset */ | |
| #define USBCMD_EGSM bit (3) /* Global Suspend Mode */ | |
| #define USBCMD_FGR bit (4) /* Force Global Resume */ | |
| #define USBCMD_SWDBG bit (5) /* SW Debug mode */ | |
| #define USBCMD_CF bit (6) /* Config Flag (sw only) */ | |
| #define USBCMD_MAXP bit (7) /* Max Packet (0 = 32, 1 = 64) */ | |
| /* Status register */ | |
| #define USBSTS 2 /* Status Register Offset 02-03h */ | |
| #define USBSTS_USBINT bit (0) /* Interrupt due to IOC */ | |
| #define USBSTS_ERROR bit (1) /* Interrupt due to error */ | |
| #define USBSTS_RD bit (2) /* Resume Detect */ | |
| #define USBSTS_HSE bit (3) /* Host System Error*/ | |
| #define USBSTS_HCPE bit (4) /* Host Controller Process Error*/ | |
| #define USBSTS_HCH bit (5) /* HC Halted */ | |
| /* Interrupt enable register */ | |
| #define USBINTR 4 /* Interrupt Enable Register 04-05h */ | |
| #define USBINTR_TIMEOUT bit (0) /* Timeout/CRC error enable */ | |
| #define USBINTR_RESUME bit (1) /* Resume interrupt enable */ | |
| #define USBINTR_IOC bit (2) /* Interrupt On Complete enable */ | |
| #define USBINTR_SP bit (3) /* Short packet interrupt enable */ | |
| /* Frame Number Register Offset 06-08h */ | |
| #define USBFRNUM 6 | |
| /* Frame List Base Address Register Offset 08-0Bh */ | |
| #define USBFLBASEADD 8 | |
| /* Start of Frame Modify Register Offset 0Ch */ | |
| #define USBSOF 0x0c | |
| /* USB port status and control registers */ | |
| #define USBPORTSC1 0x10 /*Port 1 offset 10-11h */ | |
| #define USBPORTSC2 0x12 /*Port 2 offset 12-13h */ | |
| #define USBPORTSC_CCS bit (0) /* Current Connect Status*/ | |
| #define USBPORTSC_CSC bit (1) /* Connect Status Change */ | |
| #define USBPORTSC_PED bit (2) /* Port Enable / Disable */ | |
| #define USBPORTSC_PEDC bit (3) /* Port Enable / Disable Change */ | |
| #define USBPORTSC_LSL bit (4) /* Line Status Low bit*/ | |
| #define USBPORTSC_LSH bit (5) /* Line Status High bit*/ | |
| #define USBPORTSC_RD bit (6) /* Resume Detect */ | |
| #define USBPORTSC_LSDA bit (8) /* Low Speed Device Attached */ | |
| #define USBPORTSC_PR bit (9) /* Port Reset */ | |
| #define USBPORTSC_SUSP bit (12) /* Suspend */ | |
| /* PCI Configuration Registers for USB */ | |
| // | |
| // Class Code Register offset | |
| // | |
| #define CLASSC 0x09 | |
| // | |
| // USB IO Space Base Address Register offset | |
| // | |
| #define USBBASE 0x20 | |
| // | |
| // USB legacy Support | |
| // | |
| #define USB_EMULATION 0xc0 | |
| // | |
| // USB Base Class Code,Sub-Class Code and Programming Interface. | |
| // | |
| #define PCI_CLASSC_PI_UHCI 0x00 | |
| #define SETUP_PACKET_ID 0x2D | |
| #define INPUT_PACKET_ID 0x69 | |
| #define OUTPUT_PACKET_ID 0xE1 | |
| #define ERROR_PACKET_ID 0x55 | |
| // | |
| // //////////////////////////////////////////////////////////////////////// | |
| // | |
| // USB Transfer Mechanism Data Structures | |
| // | |
| ////////////////////////////////////////////////////////////////////////// | |
| #pragma pack(1) | |
| // | |
| // USB Class Code structure | |
| // | |
| typedef struct { | |
| UINT8 PI; | |
| UINT8 SubClassCode; | |
| UINT8 BaseCode; | |
| } USB_CLASSC; | |
| typedef struct { | |
| UINT32 QHHorizontalTerminate : 1; | |
| UINT32 QHHorizontalQSelect : 1; | |
| UINT32 QHHorizontalRsvd : 2; | |
| UINT32 QHHorizontalPtr : 28; | |
| UINT32 QHVerticalTerminate : 1; | |
| UINT32 QHVerticalQSelect : 1; | |
| UINT32 QHVerticalRsvd : 2; | |
| UINT32 QHVerticalPtr : 28; | |
| } QUEUE_HEAD; | |
| typedef struct { | |
| UINT32 TDLinkPtrTerminate : 1; | |
| UINT32 TDLinkPtrQSelect : 1; | |
| UINT32 TDLinkPtrDepthSelect : 1; | |
| UINT32 TDLinkPtrRsvd : 1; | |
| UINT32 TDLinkPtr : 28; | |
| UINT32 TDStatusActualLength : 11; | |
| UINT32 TDStatusRsvd : 5; | |
| UINT32 TDStatus : 8; | |
| UINT32 TDStatusIOC : 1; | |
| UINT32 TDStatusIOS : 1; | |
| UINT32 TDStatusLS : 1; | |
| UINT32 TDStatusErr : 2; | |
| UINT32 TDStatusSPD : 1; | |
| UINT32 TDStatusRsvd2 : 2; | |
| UINT32 TDTokenPID : 8; | |
| UINT32 TDTokenDevAddr : 7; | |
| UINT32 TDTokenEndPt : 4; | |
| UINT32 TDTokenDataToggle : 1; | |
| UINT32 TDTokenRsvd : 1; | |
| UINT32 TDTokenMaxLen : 11; | |
| UINT32 TDBufferPtr; | |
| } TD; | |
| #pragma pack() | |
| typedef struct { | |
| QUEUE_HEAD QH; | |
| VOID *ptrNext; | |
| VOID *ptrDown; | |
| VOID *ptrNextIntQH; // for interrupt transfer's special use | |
| VOID *LoopPtr; | |
| } QH_STRUCT; | |
| typedef struct { | |
| TD TDData; | |
| UINT8 *pTDBuffer; | |
| VOID *ptrNextTD; | |
| VOID *ptrNextQH; | |
| UINT16 TDBufferLength; | |
| UINT16 reserved; | |
| } TD_STRUCT; | |
| // | |
| // //////////////////////////////////////////////////////////////////////// | |
| // | |
| // Universal Host Controller Device Data Structure | |
| // | |
| ////////////////////////////////////////////////////////////////////////// | |
| #define USB_HC_DEV_FROM_THIS(a) CR (a, USB_HC_DEV, UsbHc, USB_HC_DEV_SIGNATURE) | |
| #define USB2_HC_DEV_FROM_THIS(a) CR (a, USB_HC_DEV, Usb2Hc, USB_HC_DEV_SIGNATURE) | |
| #define USB_HC_DEV_SIGNATURE EFI_SIGNATURE_32 ('u', 'h', 'c', 'i') | |
| #define INTERRUPT_LIST_SIGNATURE EFI_SIGNATURE_32 ('i', 'n', 't', 's') | |
| typedef struct { | |
| UINTN Signature; | |
| LIST_ENTRY Link; | |
| UINT8 DevAddr; | |
| UINT8 EndPoint; | |
| UINT8 DataToggle; | |
| UINT8 Reserved[5]; | |
| TD_STRUCT *PtrFirstTD; | |
| QH_STRUCT *PtrQH; | |
| UINTN DataLen; | |
| UINTN PollInterval; | |
| VOID *Mapping; | |
| UINT8 *DataBuffer; // allocated host memory, not mapped memory | |
| EFI_ASYNC_USB_TRANSFER_CALLBACK InterruptCallBack; | |
| VOID *InterruptContext; | |
| } INTERRUPT_LIST; | |
| #define INTERRUPT_LIST_FROM_LINK(a) CR (a, INTERRUPT_LIST, Link, INTERRUPT_LIST_SIGNATURE) | |
| typedef struct { | |
| UINT32 FrameListPtrTerminate : 1; | |
| UINT32 FrameListPtrQSelect : 1; | |
| UINT32 FrameListRsvd : 2; | |
| UINT32 FrameListPtr : 28; | |
| } FRAMELIST_ENTRY; | |
| typedef struct _MEMORY_MANAGE_HEADER { | |
| UINT8 *BitArrayPtr; | |
| UINTN BitArraySizeInBytes; | |
| UINT8 *MemoryBlockPtr; | |
| UINTN MemoryBlockSizeInBytes; | |
| VOID *Mapping; | |
| struct _MEMORY_MANAGE_HEADER *Next; | |
| } MEMORY_MANAGE_HEADER; | |
| typedef struct { | |
| UINTN Signature; | |
| EFI_USB_HC_PROTOCOL UsbHc; | |
| EFI_USB2_HC_PROTOCOL Usb2Hc; | |
| EFI_PCI_IO_PROTOCOL *PciIo; | |
| // | |
| // local data | |
| // | |
| LIST_ENTRY InterruptListHead; | |
| FRAMELIST_ENTRY *FrameListEntry; | |
| VOID *FrameListMapping; | |
| MEMORY_MANAGE_HEADER *MemoryHeader; | |
| EFI_EVENT InterruptTransTimer; | |
| EFI_UNICODE_STRING_TABLE *ControllerNameTable; | |
| } USB_HC_DEV; | |
| extern EFI_DRIVER_BINDING_PROTOCOL gUhciDriverBinding; | |
| extern EFI_COMPONENT_NAME_PROTOCOL gUhciComponentName; | |
| // | |
| // EFI Component Name Functions | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| UhciComponentNameGetDriverName ( | |
| IN EFI_COMPONENT_NAME_PROTOCOL *This, | |
| IN CHAR8 *Language, | |
| OUT CHAR16 **DriverName | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UhciComponentNameGetControllerName ( | |
| IN EFI_COMPONENT_NAME_PROTOCOL *This, | |
| IN EFI_HANDLE ControllerHandle, | |
| IN EFI_HANDLE ChildHandle, OPTIONAL | |
| IN CHAR8 *Language, | |
| OUT CHAR16 **ControllerName | |
| ); | |
| EFI_STATUS | |
| WriteUHCCommandReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 CmdAddrOffset, | |
| IN UINT16 UsbCmd | |
| ) | |
| /*++ | |
| Routine Description: | |
| Write UHCI Command Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| CmdAddrOffset - Command address offset | |
| UsbCmd - Data to write | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ReadUHCCommandReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 CmdAddrOffset, | |
| IN OUT UINT16 *Data | |
| ) | |
| /*++ | |
| Routine Description: | |
| Read UHCI Command Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| CmdAddrOffset - Command address offset | |
| Data - Data to return | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| WriteUHCStatusReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 StatusAddrOffset, | |
| IN UINT16 UsbSts | |
| ) | |
| /*++ | |
| Routine Description: | |
| Write UHCI Staus Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| StatusAddrOffset - Status address offset | |
| UsbSts - Data to write | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ReadUHCStatusReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 StatusAddrOffset, | |
| IN OUT UINT16 *Data | |
| ) | |
| /*++ | |
| Routine Description: | |
| Read UHCI Staus Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| StatusAddrOffset - Status address offset | |
| UsbSts - Data to return | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ClearStatusReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 StatusAddrOffset | |
| ) | |
| /*++ | |
| Routine Description: | |
| Clear the content of UHC's Status Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| StatusAddrOffset - Status address offset | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ReadUHCFrameNumberReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 FrameNumAddrOffset, | |
| IN OUT UINT16 *Data | |
| ) | |
| /*++ | |
| Routine Description: | |
| Read from UHC's Frame Number Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| FrameNumAddrOffset - Frame number register offset | |
| Data - Data to return | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| WriteUHCFrameListBaseReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 FlBaseAddrOffset, | |
| IN UINT32 UsbFrameListBaseAddr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Write to UHC's Frame List Base Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| FlBaseAddrOffset - Frame Base address register | |
| UsbFrameListBaseAddr - Address to write | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ReadRootPortReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 PortAddrOffset, | |
| IN OUT UINT16 *Data | |
| ) | |
| /*++ | |
| Routine Description: | |
| Read from UHC's Root Port Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| PortAddrOffset - Port Addrress Offset, | |
| Data - Data to return | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| WriteRootPortReg ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 PortAddrOffset, | |
| IN UINT16 ControlBits | |
| ) | |
| /*++ | |
| Routine Description: | |
| Write to UHC's Root Port Register | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| PortAddrOffset - Port Addrress Offset, | |
| ControlBits - Data to write | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| WaitForUHCHalt ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 StatusRegAddr, | |
| IN UINTN Timeout | |
| ) | |
| /*++ | |
| Routine Description: | |
| Wait until UHCI halt or timeout | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| StatusRegAddr - Status Register Address | |
| Timeout - Time out value in us | |
| Returns: | |
| EFI_DEVICE_ERROR - Unable to read the status register | |
| EFI_TIMEOUT - Time out | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsStatusOK ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 StatusRegAddr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Judge whether the host controller operates well | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| StatusRegAddr - Status register address | |
| Returns: | |
| TRUE - Status is good | |
| FALSE - Status is bad | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsHostSysOrProcessErr ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 StatusRegAddr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Judge the status is HostSys,ProcessErr error or good | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| StatusRegAddr - Status register address | |
| Returns: | |
| TRUE - Status is good | |
| FALSE - Status is bad | |
| --*/ | |
| ; | |
| UINT16 | |
| GetCurrentFrameNumber ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 FrameNumAddrOffset | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get Current Frame Number | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| FrameNumAddrOffset - FrameNum register AddrOffset | |
| Returns: | |
| Frame number | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| SetFrameListBaseAddress ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 FLBASEADDRReg, | |
| IN UINT32 Addr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set FrameListBase Address | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| FlBaseAddrReg - FrameListBase register | |
| Addr - Address to set | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| UINT32 | |
| GetFrameListBaseAddress ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo, | |
| IN UINT32 FLBAddr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get Current Frame Number | |
| Arguments: | |
| PciIo - EFI_PCI_IO_PROTOCOL | |
| FrameNumAddrOffset - FrameNum register AddrOffset | |
| Returns: | |
| Frame number | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| CreateFrameList ( | |
| IN USB_HC_DEV *HcDev, | |
| IN UINT32 FLBASEADDRReg | |
| ) | |
| /*++ | |
| Routine Description: | |
| CreateFrameList | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| FlBaseAddrReg - Frame List register | |
| Returns: | |
| EFI_OUT_OF_RESOURCES - Can't allocate memory resources | |
| EFI_UNSUPPORTED - Map memory fail | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| FreeFrameListEntry ( | |
| IN USB_HC_DEV *UhcDev | |
| ) | |
| /*++ | |
| Routine Description: | |
| Free FrameList buffer | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Returns: | |
| EFI_SUCCESS - success | |
| --*/ | |
| ; | |
| VOID | |
| InitFrameList ( | |
| IN USB_HC_DEV *HcDev | |
| ) | |
| /*++ | |
| Routine Description: | |
| Initialize FrameList | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| CreateQH ( | |
| IN USB_HC_DEV *HcDev, | |
| OUT QH_STRUCT **pptrQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| CreateQH | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| pptrQH - QH_STRUCT content to return | |
| Returns: | |
| EFI_SUCCESS - Success | |
| EFI_OUT_OF_RESOURCES - Can't allocate memory | |
| --*/ | |
| ; | |
| VOID | |
| SetQHHorizontalLinkPtr ( | |
| IN QH_STRUCT *ptrQH, | |
| IN VOID *ptrNext | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set QH Horizontal Link Pointer | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| ptrNext - Data to write | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID * | |
| GetQHHorizontalLinkPtr ( | |
| IN QH_STRUCT *ptrQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get QH Horizontal Link Pointer | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| Returns: | |
| Data to return | |
| --*/ | |
| ; | |
| VOID | |
| SetQHHorizontalQHorTDSelect ( | |
| IN QH_STRUCT *ptrQH, | |
| IN BOOLEAN bQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set QH Horizontal QH or TD | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| bQH - TRUE is QH FALSE is TD | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetQHHorizontalValidorInvalid ( | |
| IN QH_STRUCT *ptrQH, | |
| IN BOOLEAN bValid | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set QH Horizontal Valid or Invalid | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| bValid - TRUE is Valid FALSE is Invalid | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetQHVerticalLinkPtr ( | |
| IN QH_STRUCT *ptrQH, | |
| IN VOID *ptrNext | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set QH Vertical Link Pointer | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| ptrNext - Data to write | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID * | |
| GetQHVerticalLinkPtr ( | |
| IN QH_STRUCT *ptrQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get QH Vertical Link Pointer | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| Returns: | |
| Data to return | |
| --*/ | |
| ; | |
| VOID | |
| SetQHVerticalQHorTDSelect ( | |
| IN QH_STRUCT *ptrQH, | |
| IN BOOLEAN bQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set QH Vertical QH or TD | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| bQH - TRUE is QH FALSE is TD | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsQHHorizontalQHSelect ( | |
| IN QH_STRUCT *ptrQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Is QH Horizontal QH Select | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| Returns: | |
| TRUE - QH | |
| FALSE - TD | |
| --*/ | |
| ; | |
| VOID | |
| SetQHVerticalValidorInvalid ( | |
| IN QH_STRUCT *ptrQH, | |
| IN BOOLEAN bValid | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set QH Vertical Valid or Invalid | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| IsValid - TRUE is valid FALSE is invalid | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| BOOLEAN | |
| GetQHVerticalValidorInvalid ( | |
| IN QH_STRUCT *ptrQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get QH Vertical Valid or Invalid | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| Returns: | |
| TRUE - Valid | |
| FALSE - Invalid | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| AllocateTDStruct ( | |
| IN USB_HC_DEV *HcDev, | |
| OUT TD_STRUCT **ppTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Allocate TD Struct | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| ppTDStruct - place to store TD_STRUCT pointer | |
| Returns: | |
| EFI_SUCCESS | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| CreateTD ( | |
| IN USB_HC_DEV *HcDev, | |
| OUT TD_STRUCT **pptrTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Create TD | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| pptrTD - TD_STRUCT pointer to store | |
| Returns: | |
| EFI_OUT_OF_RESOURCES - Can't allocate resources | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| GenSetupStageTD ( | |
| IN USB_HC_DEV *HcDev, | |
| IN UINT8 DevAddr, | |
| IN UINT8 Endpoint, | |
| IN BOOLEAN bSlow, | |
| IN UINT8 *pDevReq, | |
| IN UINT8 RequestLen, | |
| OUT TD_STRUCT **ppTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Generate Setup Stage TD | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| DevAddr - Device address | |
| Endpoint - Endpoint number | |
| bSlow - Full speed or low speed | |
| pDevReq - Device request | |
| RequestLen - Request length | |
| ppTD - TD_STRUCT to return | |
| Returns: | |
| EFI_OUT_OF_RESOURCES - Can't allocate memory | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| GenDataTD ( | |
| IN USB_HC_DEV *HcDev, | |
| IN UINT8 DevAddr, | |
| IN UINT8 Endpoint, | |
| IN UINT8 *pData, | |
| IN UINT8 Len, | |
| IN UINT8 PktID, | |
| IN UINT8 Toggle, | |
| IN BOOLEAN bSlow, | |
| OUT TD_STRUCT **ppTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Generate Data Stage TD | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| DevAddr - Device address | |
| Endpoint - Endpoint number | |
| pData - Data buffer | |
| Len - Data length | |
| PktID - Packet ID | |
| Toggle - Data toggle value | |
| bSlow - Full speed or low speed | |
| ppTD - TD_STRUCT to return | |
| Returns: | |
| EFI_OUT_OF_RESOURCES - Can't allocate memory | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| CreateStatusTD ( | |
| IN USB_HC_DEV *HcDev, | |
| IN UINT8 DevAddr, | |
| IN UINT8 Endpoint, | |
| IN UINT8 PktID, | |
| IN BOOLEAN bSlow, | |
| OUT TD_STRUCT **ppTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Generate Setup Stage TD | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| DevAddr - Device address | |
| Endpoint - Endpoint number | |
| bSlow - Full speed or low speed | |
| pDevReq - Device request | |
| RequestLen - Request length | |
| ppTD - TD_STRUCT to return | |
| Returns: | |
| EFI_OUT_OF_RESOURCES - Can't allocate memory | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| VOID | |
| SetTDLinkPtrValidorInvalid ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bValid | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Link Pointer Valid or Invalid | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| bValid - TRUE is valid FALSE is invalid | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDLinkPtrQHorTDSelect ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Link Pointer QH or TD Select | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| bQH - TRUE is QH FALSE is TD | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDLinkPtrDepthorBreadth ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bDepth | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Link Pointer depth or bread priority | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| bDepth - TRUE is Depth FALSE is Breadth | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDLinkPtr ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN VOID *ptrNext | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Link Pointer | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| ptrNext - Pointer to set | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID * | |
| GetTDLinkPtr ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD Link Pointer | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| Returns: | |
| Pointer to get | |
| --*/ | |
| ; | |
| VOID | |
| EnableorDisableTDShortPacket ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bEnable | |
| ) | |
| /*++ | |
| Routine Description: | |
| Enable or Disable TD ShortPacket | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| bEnable - TRUE is Enanble FALSE is Disable | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDControlErrorCounter ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN UINT8 nMaxErrors | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Control ErrorCounter | |
| Arguments: | |
| ptrTDStruct - TD_STRUCT | |
| nMaxErrors - Error counter number | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDLoworFullSpeedDevice ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bLowSpeedDevice | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD status low speed or full speed | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| bLowSpeedDevice - Show low speed or full speed | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDControlIsochronousorNot ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bIsochronous | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD status Isochronous or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| IsIsochronous - Show Isochronous or not | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetorClearTDControlIOC ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bSet | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD status IOC IsSet | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| IsSet - Show IOC set or not | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDStatusActiveorInactive ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN BOOLEAN bActive | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD status active or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| IsActive - Active or not | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| UINT16 | |
| SetTDTokenMaxLength ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN UINT16 nMaxLen | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Token maxlength | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| MaximumLength - Maximum length of TD Token | |
| Returns: | |
| Real maximum length set to TD Token | |
| --*/ | |
| ; | |
| VOID | |
| SetTDTokenDataToggle1 ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Token data toggle1 | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDTokenDataToggle0 ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Token data toggle0 | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| UINT8 | |
| GetTDTokenDataToggle ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD Token data toggle | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| data toggle value | |
| --*/ | |
| ; | |
| VOID | |
| SetTDTokenEndPoint ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN UINTN nEndPoint | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set Data Token endpoint number | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| EndPoint - End point number | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDTokenDeviceAddress ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN UINTN nDevAddr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Token device address | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| DeviceAddress - Device address | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDTokenPacketID ( | |
| IN TD_STRUCT *ptrTDStruct, | |
| IN UINT8 nPID | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD Token packet ID | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| PID - Packet ID | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetTDDataBuffer ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set TD data buffer | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusActive ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status active or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - Active | |
| FALSE - Inactive | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusStalled ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status stalled or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - Stalled | |
| FALSE - not stalled | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusBufferError ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status buffer error or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - Buffer error | |
| FALSE - No error | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusBabbleError ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status babble error or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - Babble error | |
| FALSE - No error | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusNAKReceived ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status NAK received | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - NAK received | |
| FALSE - NAK not received | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusCRCTimeOutError ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status CRC timeout error or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - CRC timeout error | |
| FALSE - CRC timeout no error | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsTDStatusBitStuffError ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Indicate whether TD status bit stuff error or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - Bit stuff error | |
| FALSE - Bit stuff no error | |
| --*/ | |
| ; | |
| UINT16 | |
| GetTDStatusActualLength ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD status length | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| Return Td status length | |
| --*/ | |
| ; | |
| UINT16 | |
| GetTDTokenMaxLength ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD Token maximum length | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| Return TD token maximum length | |
| --*/ | |
| ; | |
| UINT8 | |
| GetTDTokenEndPoint ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD Token endpoint number | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| Return TD Token endpoint number | |
| --*/ | |
| ; | |
| UINT8 | |
| GetTDTokenDeviceAddress ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD Token device address | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| Return TD Token device address | |
| --*/ | |
| ; | |
| UINT8 | |
| GetTDTokenPacketID ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD Token packet ID | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| Return TD Token packet ID | |
| --*/ | |
| ; | |
| UINT8 * | |
| GetTDDataBuffer ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get the point to TD data buffer | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| Return a point to TD data buffer | |
| --*/ | |
| ; | |
| BOOLEAN | |
| GetTDLinkPtrValidorInvalid ( | |
| IN TD_STRUCT *ptrTDStruct | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get TD LinkPtr valid or not | |
| Arguments: | |
| ptrTDStruct - A point to TD_STRUCT | |
| Returns: | |
| TRUE - Invalid | |
| FALSE - Valid | |
| --*/ | |
| ; | |
| UINTN | |
| CountTDsNumber ( | |
| IN TD_STRUCT *ptrFirstTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get the number of TDs | |
| Arguments: | |
| PtrFirstTD - A point to the first TD_STRUCT | |
| Returns: | |
| Return the number of TDs | |
| --*/ | |
| ; | |
| VOID | |
| LinkTDToQH ( | |
| IN QH_STRUCT *ptrQH, | |
| IN TD_STRUCT *ptrTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Link TD To QH | |
| Arguments: | |
| PtrQH - QH_STRUCT | |
| PtrTD - TD_STRUCT | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| LinkTDToTD ( | |
| IN TD_STRUCT *ptrPreTD, | |
| IN TD_STRUCT *ptrTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Link TD To TD | |
| Arguments: | |
| ptrPreTD - Previous TD_STRUCT to be linked | |
| PtrTD - TD_STRUCT to link | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetorClearCurFrameListTerminate ( | |
| IN FRAMELIST_ENTRY *pCurEntry, | |
| IN BOOLEAN bSet | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set or clear current framelist terminate | |
| Arguments: | |
| pCurEntry - A point to FRAMELIST_ENTITY | |
| IsSet - TRUE to empty the frame and indicate the Pointer field is valid | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| SetCurFrameListQHorTD ( | |
| IN FRAMELIST_ENTRY *pCurEntry, | |
| IN BOOLEAN bQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set current framelist QH or TD | |
| Arguments: | |
| pCurEntry - A point to FRAMELIST_ENTITY | |
| IsQH - TRUE to set QH and FALSE to set TD | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| BOOLEAN | |
| GetCurFrameListTerminate ( | |
| IN FRAMELIST_ENTRY *pCurEntry | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get current framelist terminate | |
| Arguments: | |
| pCurEntry - A point to FRAMELIST_ENTITY | |
| Returns: | |
| TRUE - Terminate | |
| FALSE - Not terminate | |
| --*/ | |
| ; | |
| VOID | |
| SetCurFrameListPointer ( | |
| IN FRAMELIST_ENTRY *pCurEntry, | |
| IN UINT8 *ptr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set current framelist pointer | |
| Arguments: | |
| pCurEntry - A point to FRAMELIST_ENTITY | |
| ptr - A point to FrameListPtr point to | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID * | |
| GetCurFrameListPointer ( | |
| IN FRAMELIST_ENTRY *pCurEntry | |
| ) | |
| /*++ | |
| Routine Description: | |
| Get current framelist pointer | |
| Arguments: | |
| pCurEntry - A point to FRAMELIST_ENTITY | |
| Returns: | |
| A point FrameListPtr point to | |
| --*/ | |
| ; | |
| VOID | |
| LinkQHToFrameList ( | |
| IN FRAMELIST_ENTRY *pEntry, | |
| IN UINT16 FrameListIndex, | |
| IN QH_STRUCT *ptrQH | |
| ) | |
| /*++ | |
| Routine Description: | |
| Link QH To Frame List | |
| Arguments: | |
| pEntry - FRAMELIST_ENTRY | |
| FrameListIndex - Frame List Index | |
| PtrQH - QH to link | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| DelLinkSingleQH ( | |
| IN USB_HC_DEV *HcDev, | |
| IN QH_STRUCT *ptrQH, | |
| IN UINT16 FrameListIndex, | |
| IN BOOLEAN SearchOther, | |
| IN BOOLEAN Delete | |
| ) | |
| /*++ | |
| Routine Description: | |
| Unlink from frame list and delete single QH | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| PtrQH - QH_STRUCT | |
| FrameListIndex - Frame List Index | |
| SearchOther - Search Other QH | |
| Delete - TRUE is to delete the QH | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| DeleteQueuedTDs ( | |
| IN USB_HC_DEV *HcDev, | |
| IN TD_STRUCT *ptrFirstTD | |
| ) | |
| /*++ | |
| Routine Description: | |
| Delete Queued TDs | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| PtrFirstTD - TD link list head | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| InsertQHTDToINTList ( | |
| IN USB_HC_DEV *HcDev, | |
| IN QH_STRUCT *ptrQH, | |
| IN TD_STRUCT *ptrFirstTD, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DataToggle, | |
| IN UINTN DataLength, | |
| IN UINTN PollingInterval, | |
| IN VOID *Mapping, | |
| IN UINT8 *DataBuffer, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction, | |
| IN VOID *Context | |
| ) | |
| /*++ | |
| Routine Description: | |
| Insert QH and TD To Interrupt List | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| PtrQH - QH_STRUCT | |
| PtrFirstTD - First TD_STRUCT | |
| DeviceAddress - Device Address | |
| EndPointAddress - EndPoint Address | |
| DataToggle - Data Toggle | |
| DataLength - Data length | |
| PollingInterval - Polling Interval when inserted to frame list | |
| Mapping - Mapping alue | |
| DataBuffer - Data buffer | |
| CallBackFunction- CallBackFunction after interrupt transfeer | |
| Context - CallBackFunction Context passed as function parameter | |
| Returns: | |
| EFI_SUCCESS - Sucess | |
| EFI_INVALID_PARAMETER - Paremeter is error | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| DeleteAsyncINTQHTDs ( | |
| IN USB_HC_DEV *HcDev, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| OUT UINT8 *DataToggle | |
| ) | |
| /*++ | |
| Routine Description: | |
| Delete Async INT QH and TDs | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| DeviceAddress - Device Address | |
| EndPointAddress - EndPoint Address | |
| DataToggle - Data Toggle | |
| Returns: | |
| EFI_SUCCESS - Sucess | |
| EFI_INVALID_PARAMETER - Paremeter is error | |
| --*/ | |
| ; | |
| BOOLEAN | |
| CheckTDsResults ( | |
| IN TD_STRUCT *ptrTD, | |
| IN UINTN RequiredLen, | |
| OUT UINT32 *Result, | |
| OUT UINTN *ErrTDPos, | |
| OUT UINTN *ActualTransferSize | |
| ) | |
| /*++ | |
| Routine Description: | |
| Check TDs Results | |
| Arguments: | |
| PtrTD - TD_STRUCT to check | |
| RequiredLen - Required Len | |
| Result - Transfer result | |
| ErrTDPos - Error TD Position | |
| ActualTransferSize - Actual Transfer Size | |
| Returns: | |
| TRUE - Sucess | |
| FALSE - Fail | |
| --*/ | |
| ; | |
| VOID | |
| ExecuteAsyncINTTDs ( | |
| IN USB_HC_DEV *HcDev, | |
| IN INTERRUPT_LIST *ptrList, | |
| OUT UINT32 *Result, | |
| OUT UINTN *ErrTDPos, | |
| OUT UINTN *ActualLen | |
| ) | |
| /*++ | |
| Routine Description: | |
| Execute Async Interrupt TDs | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| PtrList - INTERRUPT_LIST | |
| Result - Transfer result | |
| ErrTDPos - Error TD Position | |
| ActualTransferSize - Actual Transfer Size | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| UpdateAsyncINTQHTDs ( | |
| IN INTERRUPT_LIST *ptrList, | |
| IN UINT32 Result, | |
| IN UINT32 ErrTDPos | |
| ) | |
| /*++ | |
| Routine Description: | |
| Update Async Interrupt QH and TDs | |
| Arguments: | |
| PtrList - INTERRUPT_LIST | |
| Result - Transfer reslut | |
| ErrTDPos - Error TD Position | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| ReleaseInterruptList ( | |
| IN USB_HC_DEV *HcDev, | |
| IN LIST_ENTRY *ListHead | |
| ) | |
| /*++ | |
| Routine Description: | |
| Release Interrupt List | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| ListHead - List head | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ExecuteControlTransfer ( | |
| IN USB_HC_DEV *HcDev, | |
| IN TD_STRUCT *ptrTD, | |
| IN UINT32 wIndex, | |
| OUT UINTN *ActualLen, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ) | |
| /*++ | |
| Routine Description: | |
| Execute Control Transfer | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| PtrTD - TD_STRUCT | |
| wIndex - No use | |
| ActualLen - Actual transfered Len | |
| TimeOut - TimeOut value in milliseconds | |
| TransferResult - Transfer result | |
| Returns: | |
| EFI_SUCCESS - Sucess | |
| EFI_DEVICE_ERROR - Error | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| ExecBulkorSyncInterruptTransfer ( | |
| IN USB_HC_DEV *HcDev, | |
| IN TD_STRUCT *ptrTD, | |
| IN UINT32 wIndex, | |
| OUT UINTN *ActualLen, | |
| OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ) | |
| /*++ | |
| Routine Description: | |
| Execute Bulk or SyncInterrupt Transfer | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| PtrTD - TD_STRUCT | |
| wIndex - No use | |
| ActualLen - Actual transfered Len | |
| DataToggle - Data Toggle | |
| TimeOut - TimeOut value in milliseconds | |
| TransferResult - Transfer result | |
| Returns: | |
| EFI_SUCCESS - Sucess | |
| EFI_DEVICE_ERROR - Error | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| InitializeMemoryManagement ( | |
| IN USB_HC_DEV *HcDev | |
| ) | |
| /*++ | |
| Routine Description: | |
| Initialize Memory Management | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Returns: | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| CreateMemoryBlock ( | |
| IN USB_HC_DEV *HcDev, | |
| IN MEMORY_MANAGE_HEADER **MemoryHeader, | |
| IN UINTN MemoryBlockSizeInPages | |
| ) | |
| /*++ | |
| Routine Description: | |
| Use PciIo->AllocateBuffer to allocate common buffer for the memory block, | |
| and use PciIo->Map to map the common buffer for Bus Master Read/Write. | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| MemoryHeader - MEMORY_MANAGE_HEADER to output | |
| MemoryBlockSizeInPages - MemoryBlockSizeInPages | |
| Returns: | |
| EFI_SUCCESS - Success | |
| EFI_OUT_OF_RESOURCES - Out of resources | |
| EFI_UNSUPPORTED - Unsupported | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| FreeMemoryHeader ( | |
| IN USB_HC_DEV *HcDev, | |
| IN MEMORY_MANAGE_HEADER *MemoryHeader | |
| ) | |
| /*++ | |
| Routine Description: | |
| Free Memory Header | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| MemoryHeader - MemoryHeader to be freed | |
| Returns: | |
| EFI_INVALID_PARAMETER - Parameter is error | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| UhciAllocatePool ( | |
| IN USB_HC_DEV *UhcDev, | |
| IN UINT8 **Pool, | |
| IN UINTN AllocSize | |
| ) | |
| /*++ | |
| Routine Description: | |
| Uhci Allocate Pool | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Pool - Place to store pointer to the memory buffer | |
| AllocSize - Alloc Size | |
| Returns: | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| VOID | |
| UhciFreePool ( | |
| IN USB_HC_DEV *HcDev, | |
| IN UINT8 *Pool, | |
| IN UINTN AllocSize | |
| ) | |
| /*++ | |
| Routine Description: | |
| Uhci Free Pool | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Pool - Pool to free | |
| AllocSize - Pool size | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| InsertMemoryHeaderToList ( | |
| IN MEMORY_MANAGE_HEADER *MemoryHeader, | |
| IN MEMORY_MANAGE_HEADER *NewMemoryHeader | |
| ) | |
| /*++ | |
| Routine Description: | |
| Insert Memory Header To List | |
| Arguments: | |
| MemoryHeader - MEMORY_MANAGE_HEADER | |
| NewMemoryHeader - MEMORY_MANAGE_HEADER | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| AllocMemInMemoryBlock ( | |
| IN MEMORY_MANAGE_HEADER *MemoryHeader, | |
| IN VOID **Pool, | |
| IN UINTN NumberOfMemoryUnit | |
| ) | |
| /*++ | |
| Routine Description: | |
| Alloc Memory In MemoryBlock | |
| Arguments: | |
| MemoryHeader - MEMORY_MANAGE_HEADER | |
| Pool - Place to store pointer to memory | |
| NumberOfMemoryUnit - Number Of Memory Unit | |
| Returns: | |
| EFI_NOT_FOUND - Can't find the free memory | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| BOOLEAN | |
| IsMemoryBlockEmptied ( | |
| IN MEMORY_MANAGE_HEADER *MemoryHeaderPtr | |
| ) | |
| /*++ | |
| Routine Description: | |
| Is Memory Block Emptied | |
| Arguments: | |
| MemoryHeaderPtr - MEMORY_MANAGE_HEADER | |
| Returns: | |
| TRUE - Empty | |
| FALSE - Not Empty | |
| --*/ | |
| ; | |
| VOID | |
| DelinkMemoryBlock ( | |
| IN MEMORY_MANAGE_HEADER *FirstMemoryHeader, | |
| IN MEMORY_MANAGE_HEADER *FreeMemoryHeader | |
| ) | |
| /*++ | |
| Routine Description: | |
| Delink Memory Block | |
| Arguments: | |
| FirstMemoryHeader - MEMORY_MANAGE_HEADER | |
| NeedFreeMemoryHeader - MEMORY_MANAGE_HEADER | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| DelMemoryManagement ( | |
| IN USB_HC_DEV *HcDev | |
| ) | |
| /*++ | |
| Routine Description: | |
| Delete Memory Management | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Returns: | |
| EFI_SUCCESS - Success | |
| --*/ | |
| ; | |
| VOID | |
| EnableMaxPacketSize ( | |
| IN USB_HC_DEV *HcDev | |
| ) | |
| /*++ | |
| Routine Description: | |
| Enable Max Packet Size | |
| Arguments: | |
| HcDev - USB_HC_DEV | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| CleanUsbTransactions ( | |
| IN USB_HC_DEV *HcDev | |
| ) | |
| /*++ | |
| Routine Description: | |
| Clean USB Transactions | |
| Arguments: | |
| HcDev - A point to USB_HC_DEV | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| VOID | |
| TurnOffUSBEmulation ( | |
| IN EFI_PCI_IO_PROTOCOL *PciIo | |
| ) | |
| /*++ | |
| Routine Description: | |
| Set current framelist QH or TD | |
| Arguments: | |
| pCurEntry - A point to FRAMELIST_ENTITY | |
| IsQH - TRUE to set QH and FALSE to set TD | |
| Returns: | |
| VOID | |
| --*/ | |
| ; | |
| // | |
| // Prototypes | |
| // Driver model protocol interface | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIDriverBindingSupported ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Controller, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIDriverBindingStart ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Controller, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIDriverBindingStop ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Controller, | |
| IN UINTN NumberOfChildren, | |
| IN EFI_HANDLE *ChildHandleBuffer | |
| ); | |
| // | |
| // UHCI interface functions | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIReset ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT16 Attributes | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIGetState ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| OUT EFI_USB_HC_STATE *State | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCISetState ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN EFI_USB_HC_STATE State | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIControlTransfer ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN BOOLEAN IsSlowDevice, | |
| IN UINT8 MaximumPacketLength, | |
| IN EFI_USB_DEVICE_REQUEST *Request, | |
| IN EFI_USB_DATA_DIRECTION TransferDirection, | |
| IN OUT VOID *Data, OPTIONAL | |
| IN OUT UINTN *DataLength, OPTIONAL | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIBulkTransfer ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIAsyncInterruptTransfer ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN BOOLEAN IsSlowDevice, | |
| IN UINT8 MaximumPacketLength, | |
| IN BOOLEAN IsNewTransfer, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN PollingInterval, OPTIONAL | |
| IN UINTN DataLength, OPTIONAL | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction, OPTIONAL | |
| IN VOID *Context OPTIONAL | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCISyncInterruptTransfer ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN BOOLEAN IsSlowDevice, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIIsochronousTransfer ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN UINTN DataLength, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIAsyncIsochronousTransfer ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN UINTN DataLength, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, | |
| IN VOID *Context OPTIONAL | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIGetRootHubPortNumber ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| OUT UINT8 *PortNumber | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIGetRootHubPortStatus ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 PortNumber, | |
| OUT EFI_USB_PORT_STATUS *PortStatus | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCISetRootHubPortFeature ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCIClearRootHubPortFeature ( | |
| IN EFI_USB_HC_PROTOCOL *This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| // | |
| // UEFI 2.0 Protocol | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2GetCapability( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| OUT UINT8 *MaxSpeed, | |
| OUT UINT8 *PortNumber, | |
| OUT UINT8 *Is64BitCapable | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2Reset ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT16 Attributes | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2GetState ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| OUT EFI_USB_HC_STATE * State | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2SetState ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN EFI_USB_HC_STATE State | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2ControlTransfer ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN EFI_USB_DEVICE_REQUEST * Request, | |
| IN EFI_USB_DATA_DIRECTION TransferDirection, | |
| IN OUT VOID *Data, OPTIONAL | |
| IN OUT UINTN *DataLength, OPTIONAL | |
| IN UINTN TimeOut, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2BulkTransfer ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN UINT8 DataBuffersNumber, | |
| IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM], | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2AsyncInterruptTransfer ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN BOOLEAN IsNewTransfer, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN PollingInterval, OPTIONAL | |
| IN UINTN DataLength, OPTIONAL | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction, OPTIONAL | |
| IN VOID *Context OPTIONAL | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2SyncInterruptTransfer ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2IsochronousTransfer ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN UINT8 DataBuffersNumber, | |
| IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], | |
| IN UINTN DataLength, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2AsyncIsochronousTransfer ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN UINT8 DataBuffersNumber, | |
| IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], | |
| IN UINTN DataLength, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, | |
| IN VOID *Context OPTIONAL | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2GetRootHubPortStatus ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 PortNumber, | |
| OUT EFI_USB_PORT_STATUS * PortStatus | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2SetRootHubPortFeature ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| UHCI2ClearRootHubPortFeature ( | |
| IN EFI_USB2_HC_PROTOCOL * This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| // | |
| // Asynchronous interrupt transfer monitor function | |
| // | |
| VOID | |
| EFIAPI | |
| MonitorInterruptTrans ( | |
| IN EFI_EVENT Event, | |
| IN VOID *Context | |
| ); | |
| #endif |