PEIM to produce gPeiUsb2HostControllerPpiGuid based on gPeiUsbControllerPpiGuid\r
which is used to enable recovery function from USB Drivers.\r
\r
-Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>\r
- \r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions\r
-of the BSD License which accompanies this distribution. The\r
-full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
return NULL;\r
}\r
ZeroMem ((VOID *)(UINTN)TempPtr, PageNumber*EFI_PAGE_SIZE);\r
- \r
+\r
//\r
// each bit in the bit array represents USBHC_MEM_UNIT\r
// bytes of memory in the memory block.\r
//\r
ASSERT (USBHC_MEM_UNIT * 8 <= EFI_PAGE_SIZE);\r
- \r
+\r
Block = (USBHC_MEM_BLOCK*)(UINTN)TempPtr;\r
Block->BufLen = EFI_PAGES_TO_SIZE (Pages);\r
Block->BitsLen = Block->BufLen / (USBHC_MEM_UNIT * 8);\r
- \r
+\r
PageNumber = (Block->BitsLen)/PAGESIZE +1;\r
Status = PeiServicesAllocatePages (\r
EfiBootServicesCode,\r
PageNumber,\r
&TempPtr\r
);\r
- \r
+\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
- ZeroMem ((VOID *)(UINTN)TempPtr, PageNumber*EFI_PAGE_SIZE); \r
+ ZeroMem ((VOID *)(UINTN)TempPtr, PageNumber*EFI_PAGE_SIZE);\r
\r
Block->Bits = (UINT8 *)(UINTN)TempPtr;\r
\r
if (Available < Units) {\r
return NULL;\r
}\r
- \r
+\r
//\r
// Mark the memory as allocated\r
//\r
{\r
UINTN Index;\r
\r
- \r
+\r
for (Index = 0; Index < Block->BitsLen; Index++) {\r
if (Block->Bits[Index] != 0) {\r
return FALSE;\r
return TRUE;\r
}\r
\r
-/**\r
- Unlink the memory block from the pool's list.\r
-\r
- @param Head The block list head of the memory's pool.\r
- @param BlockToUnlink The memory block to unlink.\r
-\r
-**/\r
-VOID\r
-UsbHcUnlinkMemBlock (\r
- IN USBHC_MEM_BLOCK *Head,\r
- IN USBHC_MEM_BLOCK *BlockToUnlink\r
- )\r
-{\r
- USBHC_MEM_BLOCK *Block;\r
-\r
- ASSERT ((Head != NULL) && (BlockToUnlink != NULL));\r
-\r
- for (Block = Head; Block != NULL; Block = Block->Next) {\r
- if (Block->Next == BlockToUnlink) {\r
- Block->Next = BlockToUnlink->Next;\r
- BlockToUnlink->Next = NULL;\r
- break;\r
- }\r
- }\r
-}\r
\r
/**\r
Initialize the memory management pool for the host controller.\r
- \r
+\r
@param Ehc The EHCI device.\r
@param Check4G Whether the host controller requires allocated memory.\r
from one 4G address space.\r
UINTN PageNumber;\r
EFI_STATUS Status;\r
EFI_PHYSICAL_ADDRESS TempPtr;\r
- \r
+\r
PageNumber = sizeof(USBHC_MEM_POOL)/PAGESIZE +1;\r
Status = PeiServicesAllocatePages (\r
EfiBootServicesCode,\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
- ZeroMem ((VOID *)(UINTN)TempPtr, PageNumber*EFI_PAGE_SIZE); \r
+ ZeroMem ((VOID *)(UINTN)TempPtr, PageNumber*EFI_PAGE_SIZE);\r
\r
- Pool = (USBHC_MEM_POOL *) ((UINTN) TempPtr); \r
+ Pool = (USBHC_MEM_POOL *) ((UINTN) TempPtr);\r
\r
Pool->Check4G = Check4G;\r
Pool->Which4G = Which4G;\r
\r
//\r
// Unlink all the memory blocks from the pool, then free them.\r
- // UsbHcUnlinkMemBlock can't be used to unlink and free the\r
- // first block.\r
//\r
for (Block = Pool->Head->Next; Block != NULL; Block = Block->Next) {\r
UsbHcFreeMemBlock (Ehc, Pool, Block);\r
/**\r
Allocate some memory from the host controller's memory pool\r
which can be used to communicate with host controller.\r
- \r
+\r
@param Ehc The EHCI device.\r
@param Pool The host controller's memory pool.\r
@param Size Size of the memory to allocate.\r
if (NewBlock == NULL) {\r
return NULL;\r
}\r
- \r
+\r
//\r
// Add the new memory block to the pool, then allocate memory from it\r
//\r