/** @file\r
BDS routines to handle capsules.\r
\r
-Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
+Copyright (c) 2004 - 2009, Intel Corporation. <BR>\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
**/\r
#include "Bds.h"\r
\r
-/**\r
- This function locks the block \r
-\r
- @param CpuIo A instance of EFI_CPU_IO_PROTOCOL. \r
- @param Base The base address flash region to be locked.\r
-\r
-**/\r
-VOID\r
-BdsLockFv (\r
- IN EFI_CPU_IO_PROTOCOL *CpuIo,\r
- IN EFI_PHYSICAL_ADDRESS Base\r
- )\r
-{\r
- EFI_FV_BLOCK_MAP_ENTRY *BlockMap;\r
- EFI_FIRMWARE_VOLUME_HEADER *FvHeader;\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT8 Data;\r
- UINT32 BlockLength;\r
- UINTN Index;\r
-\r
- BaseAddress = Base - 0x400000 + 2;\r
- FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) ((UINTN) (Base));\r
- BlockMap = &(FvHeader->BlockMap[0]);\r
-\r
- while ((BlockMap->NumBlocks != 0) && (BlockMap->Length != 0)) {\r
- BlockLength = BlockMap->Length;\r
- for (Index = 0; Index < BlockMap->NumBlocks; Index++) {\r
- CpuIo->Mem.Read (\r
- CpuIo,\r
- EfiCpuIoWidthUint8,\r
- BaseAddress,\r
- 1,\r
- &Data\r
- );\r
- Data = (UINT8) (Data | 0x3);\r
- CpuIo->Mem.Write (\r
- CpuIo,\r
- EfiCpuIoWidthUint8,\r
- BaseAddress,\r
- 1,\r
- &Data\r
- );\r
- BaseAddress += BlockLength;\r
- }\r
-\r
- BlockMap++;\r
- }\r
-}\r
-\r
/**\r
\r
This routine is called to see if there are any capsules we need to process.\r
\r
**/\r
EFI_STATUS\r
-ProcessCapsules (\r
+EFIAPI\r
+BdsProcessCapsules (\r
EFI_BOOT_MODE BootMode\r
)\r
{\r
VOID **CapsulePtr;\r
VOID **CapsulePtrCache;\r
EFI_GUID *CapsuleGuidCache; \r
- CAPSULE_HOB_INFO *CapsuleHobInfo;\r
\r
CapsuleNumber = 0;\r
CapsuleTotalNumber = 0;\r
// Find all capsule images from hob\r
//\r
HobPointer.Raw = GetHobList ();\r
- while ((HobPointer.Raw = GetNextGuidHob (&gEfiCapsuleVendorGuid, HobPointer.Raw)) != NULL) {\r
+ while ((HobPointer.Raw = GetNextHob (EFI_HOB_TYPE_UEFI_CAPSULE, HobPointer.Raw)) != NULL) {\r
CapsuleTotalNumber ++;\r
-\r
HobPointer.Raw = GET_NEXT_HOB (HobPointer);\r
}\r
\r
// Find all capsule images from hob\r
//\r
HobPointer.Raw = GetHobList ();\r
- while ((HobPointer.Raw = GetNextGuidHob (&gEfiCapsuleVendorGuid, HobPointer.Raw)) != NULL) {\r
- CapsuleHobInfo = GET_GUID_HOB_DATA (HobPointer.Guid);\r
- CapsulePtr [CapsuleNumber++] = (VOID *)(UINTN)(CapsuleHobInfo->BaseAddress);\r
-\r
+ while ((HobPointer.Raw = GetNextHob (EFI_HOB_TYPE_UEFI_CAPSULE, HobPointer.Raw)) != NULL) {\r
+ CapsulePtr [CapsuleNumber++] = (VOID *) (UINTN) HobPointer.Capsule->BaseAddress;\r
HobPointer.Raw = GET_NEXT_HOB (HobPointer);\r
}\r
\r
\r
return Status;\r
}\r
+\r