]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/Capsules.c
1. PI SMBIOS Checkin. Major change include:
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / Capsules.c
index 904a775493a7b61ad8e4fe21498ec858885ade0e..f2d0d987966897fafa74674584236da40c56f197 100644 (file)
@@ -1,7 +1,7 @@
 /** @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
@@ -13,55 +13,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\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
@@ -83,7 +34,7 @@ BdsLockFv (
 \r
 **/\r
 EFI_STATUS\r
-ProcessCapsules (\r
+BdsProcessCapsules (\r
   EFI_BOOT_MODE BootMode\r
   )\r
 {\r
@@ -100,7 +51,6 @@ ProcessCapsules (
   VOID                        **CapsulePtr;\r
   VOID                        **CapsulePtrCache;\r
   EFI_GUID                    *CapsuleGuidCache; \r
-  CAPSULE_HOB_INFO            *CapsuleHobInfo;\r
 \r
   CapsuleNumber = 0;\r
   CapsuleTotalNumber = 0;\r
@@ -122,9 +72,8 @@ ProcessCapsules (
   // 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
@@ -150,10 +99,8 @@ ProcessCapsules (
   // 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
@@ -255,3 +202,4 @@ ProcessCapsules (
 \r
   return Status;\r
 }\r
+\r