/** @file\r
- Platform BDS library definition. A platform can implement \r
+ Platform BDS library definition. A platform can implement\r
instances to support platform-specific behavior.\r
\r
-Copyright (c) 2008 - 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
-http://opensource.org/licenses/bsd-license.php\r
+Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under\r
+the terms and conditions of the BSD License that accompanies this distribution.\r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php.\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
#ifndef __PLATFORM_BDS_LIB_H_\r
#define __PLATFORM_BDS_LIB_H_\r
\r
-#include <Protocol/Bds.h>\r
#include <Protocol/GenericMemoryTest.h>\r
#include <Library/GenericBdsLib.h>\r
\r
+/**\r
+ Perform the memory test base on the memory test intensive level,\r
+ and update the memory resource.\r
+\r
+ @param Level The memory test intensive level.\r
+\r
+ @retval EFI_STATUS Successfully test all the system memory, and update\r
+ the memory resource\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *BASEM_MEMORY_TEST)(\r
+ IN EXTENDMEM_COVERAGE_LEVEL Level\r
+ );\r
+\r
+/**\r
+ This routine is called to see if there are any capsules we need to process.\r
+ If the boot mode is not UPDATE, then we do nothing. Otherwise, find the\r
+ capsule HOBS and produce firmware volumes for them via the DXE service.\r
+ Then call the dispatcher to dispatch drivers from them. Finally, check\r
+ the status of the updates.\r
+\r
+ This function should be called by BDS in case we need to do some\r
+ sort of processing even if there is no capsule to process. We\r
+ need to do this if an earlier update went away and we need to\r
+ clear the capsule variable so on the next reset PEI does not see it and\r
+ think there is a capsule available.\r
+\r
+ @param BootMode The current boot mode\r
+\r
+ @retval EFI_INVALID_PARAMETER The boot mode is not correct for an update.\r
+ @retval EFI_SUCCESS There is no error when processing a capsule.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *PROCESS_CAPSULES)(\r
+ IN EFI_BOOT_MODE BootMode\r
+ );\r
+\r
/**\r
Platform Bds initialization. Includes the platform firmware vendor, revision\r
and so crc check.\r
);\r
\r
/**\r
- The function will excute with as the platform policy, current policy\r
+ The function will execute with as the platform policy, current policy\r
is driven by boot mode. IBV/OEM can customize this code for their specific\r
policy action.\r
\r
@param DriverOptionList The header of the driver option link list\r
@param BootOptionList The header of the boot option link list\r
+ @param ProcessCapsules A pointer to ProcessCapsules()\r
+ @param BaseMemoryTest A pointer to BaseMemoryTest()\r
\r
**/\r
VOID\r
EFIAPI\r
PlatformBdsPolicyBehavior (\r
IN LIST_ENTRY *DriverOptionList,\r
- IN LIST_ENTRY *BootOptionList\r
+ IN LIST_ENTRY *BootOptionList,\r
+ IN PROCESS_CAPSULES ProcessCapsules,\r
+ IN BASEM_MEMORY_TEST BaseMemoryTest\r
);\r
\r
/**\r
- Hook point after a boot attempt fails.\r
+ Hook point for a user-provided function, for after a boot attempt fails.\r
\r
- @param Option Pointer to Boot Option that failed to boot.\r
- @param Status Status returned from failed boot.\r
- @param ExitData Exit data returned from failed boot.\r
- @param ExitDataSize Exit data size returned from failed boot.\r
+ @param Option A pointer to Boot Option that failed to boot.\r
+ @param Status The status returned from failed boot.\r
+ @param ExitData The exit data returned from failed boot.\r
+ @param ExitDataSize The exit data size returned from failed boot.\r
\r
**/\r
VOID\r
interactive mode and stop processing the BootOrder list in this case. This\r
is also a platform implementation, and can be customized by an IBV/OEM.\r
\r
- @param Option Pointer to Boot Option that successfully booted.\r
+ @param Option A pointer to the Boot Option that successfully booted.\r
\r
**/\r
VOID\r
EFIAPI\r
PlatformBdsBootSuccess (\r
- IN BDS_COMMON_OPTION *Option\r
+ IN BDS_COMMON_OPTION *Option\r
);\r
\r
\r
This function locks platform flash that is not allowed to be updated during normal boot path.\r
The flash layout is platform specific.\r
\r
- @retval EFI_SUCCESS The non-updatable flash areas.\r
-**/\r
-EFI_STATUS\r
+ **/\r
+VOID\r
EFIAPI\r
PlatformBdsLockNonUpdatableFlash (\r
VOID\r
);\r
+\r
+/**\r
+ Lock the ConsoleIn device in system table. All key\r
+ presses will be ignored until the Password is typed in. The only way to\r
+ disable the password is to type it in to a ConIn device.\r
+\r
+ @param Password The password used to lock ConIn device.\r
+\r
+ @retval EFI_SUCCESS Lock the Console In Spliter virtual handle successfully.\r
+ @retval EFI_UNSUPPORTED Password not found.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+LockKeyboards (\r
+ IN CHAR16 *Password\r
+ );\r
+\r
#endif\r