+++ /dev/null
-/** @file\r
-This file contains the definination for host controller memory\r
-management routines.\r
-\r
-Copyright (c) 2013-2015 Intel Corporation.\r
-\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _USB_HC_MEM_H_\r
-#define _USB_HC_MEM_H_\r
-\r
-#define USB_HC_BIT(a) ((UINTN)(1 << (a)))\r
-\r
-#define USB_HC_BIT_IS_SET(Data, Bit) \\r
- ((BOOLEAN)(((Data) & USB_HC_BIT(Bit)) == USB_HC_BIT(Bit)))\r
-\r
-#define USB_HC_HIGH_32BIT(Addr64) \\r
- ((UINT32)(RShiftU64((UINTN)(Addr64), 32) & 0XFFFFFFFF))\r
-\r
-typedef struct _USBHC_MEM_BLOCK USBHC_MEM_BLOCK;\r
-struct _USBHC_MEM_BLOCK {\r
- UINT8 *Bits; // Bit array to record which unit is allocated\r
- UINTN BitsLen;\r
- UINT8 *Buf;\r
- UINT8 *BufHost;\r
- UINTN BufLen; // Memory size in bytes\r
- VOID *Mapping;\r
- USBHC_MEM_BLOCK *Next;\r
-};\r
-\r
-//\r
-// USBHC_MEM_POOL is used to manage the memory used by USB\r
-// host controller. EHCI requires the control memory and transfer\r
-// data to be on the same 4G memory.\r
-//\r
-typedef struct _USBHC_MEM_POOL {\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- BOOLEAN Check4G;\r
- UINT32 Which4G;\r
- USBHC_MEM_BLOCK *Head;\r
-} USBHC_MEM_POOL;\r
-\r
-//\r
-// Memory allocation unit, must be 2^n, n>4\r
-//\r
-#define USBHC_MEM_UNIT 64\r
-\r
-#define USBHC_MEM_UNIT_MASK (USBHC_MEM_UNIT - 1)\r
-#define USBHC_MEM_DEFAULT_PAGES 16\r
-\r
-#define USBHC_MEM_ROUND(Len) (((Len) + USBHC_MEM_UNIT_MASK) & (~USBHC_MEM_UNIT_MASK))\r
-\r
-//\r
-// Advance the byte and bit to the next bit, adjust byte accordingly.\r
-//\r
-#define NEXT_BIT(Byte, Bit) \\r
- do { \\r
- (Bit)++; \\r
- if ((Bit) > 7) { \\r
- (Byte)++; \\r
- (Bit) = 0; \\r
- } \\r
- } while (0)\r
-\r
-\r
-\r
-/**\r
- Initialize the memory management pool for the host controller.\r
-\r
- @param PciIo The PciIo that can be used to access the host controller.\r
- @param Check4G Whether the host controller requires allocated memory\r
- from one 4G address space.\r
- @param Which4G The 4G memory area each memory allocated should be from.\r
-\r
- @retval EFI_SUCCESS The memory pool is initialized.\r
- @retval EFI_OUT_OF_RESOURCE Fail to init the memory pool.\r
-\r
-**/\r
-USBHC_MEM_POOL *\r
-UsbHcInitMemPool (\r
- IN EFI_PCI_IO_PROTOCOL *PciIo,\r
- IN BOOLEAN Check4G,\r
- IN UINT32 Which4G\r
- );\r
-\r
-\r
-/**\r
- Release the memory management pool.\r
-\r
- @param Pool The USB memory pool to free.\r
-\r
- @retval EFI_SUCCESS The memory pool is freed.\r
- @retval EFI_DEVICE_ERROR Failed to free the memory pool.\r
-\r
-**/\r
-EFI_STATUS\r
-UsbHcFreeMemPool (\r
- IN USBHC_MEM_POOL *Pool\r
- );\r
-\r
-\r
-/**\r
- Allocate some memory from the host controller's memory pool\r
- which can be used to communicate with host controller.\r
-\r
- @param Pool The host controller's memory pool.\r
- @param Size Size of the memory to allocate.\r
-\r
- @return The allocated memory or NULL.\r
-\r
-**/\r
-VOID *\r
-UsbHcAllocateMem (\r
- IN USBHC_MEM_POOL *Pool,\r
- IN UINTN Size\r
- );\r
-\r
-\r
-/**\r
- Free the allocated memory back to the memory pool.\r
-\r
- @param Pool The memory pool of the host controller.\r
- @param Mem The memory to free.\r
- @param Size The size of the memory to free.\r
-\r
-**/\r
-VOID\r
-UsbHcFreeMem (\r
- IN USBHC_MEM_POOL *Pool,\r
- IN VOID *Mem,\r
- IN UINTN Size\r
- );\r
-\r
-/**\r
- Calculate the corresponding pci bus address according to the Mem parameter.\r
-\r
- @param Pool The memory pool of the host controller.\r
- @param Mem The pointer to host memory.\r
- @param Size The size of the memory region.\r
-\r
- @return the pci memory address\r
-**/\r
-EFI_PHYSICAL_ADDRESS\r
-UsbHcGetPciAddressForHostMem (\r
- IN USBHC_MEM_POOL *Pool,\r
- IN VOID *Mem,\r
- IN UINTN Size\r
- );\r
-\r
-#endif\r