\r
This file contains the definination for host controller memory management routines.\r
\r
-Copyright (c) 2007, Intel Corporation\r
+Copyright (c) 2007 - 2010, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
#ifndef _EFI_EHCI_MEM_H_\r
#define _EFI_EHCI_MEM_H_\r
\r
-\r
-#include <IndustryStandard/Pci22.h>\r
-\r
#define USB_HC_BIT(a) ((UINTN)(1 << (a)))\r
\r
#define USB_HC_BIT_IS_SET(Data, Bit) \\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
-\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
USBHC_MEM_BLOCK *Head;\r
} USBHC_MEM_POOL;\r
\r
-typedef enum {\r
- USBHC_MEM_UNIT = 64, // Memory allocation unit, must be 2^n, n>4\r
+//\r
+// Memory allocation unit, must be 2^n, n>4\r
+//\r
+#define USBHC_MEM_UNIT 64\r
\r
- USBHC_MEM_UNIT_MASK = USBHC_MEM_UNIT - 1,\r
- USBHC_MEM_DEFAULT_PAGES = 16\r
-} USBHC_MEM_UNIT_DATA;\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
@param Mem The memory to free.\r
@param Size The size of the memory to free.\r
\r
- @return None.\r
-\r
**/\r
VOID\r
UsbHcFreeMem (\r
IN VOID *Mem,\r
IN UINTN Size\r
);\r
+\r
+/**\r
+ Get the pci memory address according to the allocated host memory address.\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
+ @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