X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FBus%2FPci%2FUhci%2FDxe%2Fuhci.h;fp=EdkModulePkg%2FBus%2FPci%2FUhci%2FDxe%2Fuhci.h;h=0000000000000000000000000000000000000000;hp=68571c5d8912e4a5688da6a99a9525ca187a9fe1;hb=808def96aa4589fba9c2d0ea55837754a3b7a4f7;hpb=9216450d1143056a50a5f916984a2d7faf590488 diff --git a/EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.h b/EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.h deleted file mode 100644 index 68571c5d89..0000000000 --- a/EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.h +++ /dev/null @@ -1,2995 +0,0 @@ -/*++ - -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 - -#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