#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 Success 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 boot mode is not correct for an update\r
+ @retval EFI_SUCCESS There is no error when processing 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
@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
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 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