\r
This file contains the definination for host controller memory management routines.\r
\r
-Copyright (c) 2007 - 2009, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
+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
http://opensource.org/licenses/bsd-license.php\r
#define USB_HC_HIGH_32BIT(Addr64) \\r
((UINT32)(RShiftU64((UINTN)(Addr64), 32) & 0XFFFFFFFF))\r
\r
-typedef struct _USBHC_MEM_BLOCK {\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
- struct _USBHC_MEM_BLOCK *Next;\r
-} USBHC_MEM_BLOCK;\r
+ USBHC_MEM_BLOCK *Next;\r
+};\r
\r
//\r
// USBHC_MEM_POOL is used to manage the memory used by USB\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
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