14af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/** @file
24af04335ac9aeb1802b995b102117b6f9de46809Dandan BiHeader file for boot maintenance module.
34af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
44af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCopyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
54af04335ac9aeb1802b995b102117b6f9de46809Dandan BiThis program and the accompanying materials
64af04335ac9aeb1802b995b102117b6f9de46809Dandan Biare licensed and made available under the terms and conditions of the BSD License
74af04335ac9aeb1802b995b102117b6f9de46809Dandan Biwhich accompanies this distribution.  The full text of the license may be found at
84af04335ac9aeb1802b995b102117b6f9de46809Dandan Bihttp://opensource.org/licenses/bsd-license.php
94af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
104af04335ac9aeb1802b995b102117b6f9de46809Dandan BiTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
114af04335ac9aeb1802b995b102117b6f9de46809Dandan BiWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#ifndef _BOOT_MAINT_H_
164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define _BOOT_MAINT_H_
174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include "FormGuid.h"
194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Guid/TtyTerm.h>
214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Guid/MdeModuleHii.h>
224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Guid/FileSystemVolumeLabelInfo.h>
234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Guid/GlobalVariable.h>
244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Guid/HiiBootMaintenanceFormset.h>
254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Protocol/LoadFile.h>
274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Protocol/HiiConfigAccess.h>
284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Protocol/SimpleFileSystem.h>
294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Protocol/SerialIo.h>
304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Protocol/DevicePathToText.h>
314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/PrintLib.h>
334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/DebugLib.h>
344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/BaseMemoryLib.h>
354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/UefiBootServicesTableLib.h>
364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/UefiLib.h>
374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/MemoryAllocationLib.h>
384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/UefiRuntimeServicesTableLib.h>
394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/DevicePathLib.h>
404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/HiiLib.h>
414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/UefiHiiServicesLib.h>
424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/UefiBootManagerLib.h>
434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#include <Library/FileExplorerLib.h>
444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#pragma pack(1)
464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi///
484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// HII specific Vendor Device Path definition.
494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi///
504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VENDOR_DEVICE_PATH             VendorDevicePath;
524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_DEVICE_PATH_PROTOCOL       End;
534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} HII_VENDOR_DEVICE_PATH;
544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#pragma pack()
554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Constants which are variable names used to access variables
584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define VAR_CON_OUT_MODE L"ConOutMode"
614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Variable created with this flag will be "Efi:...."
644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define VAR_FLAG  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
674af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern EFI_GUID mBootMaintGuid;
684af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern CHAR16   mBootMaintStorageName[];
694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// These are the VFR compiler generated data representing our VFR data.
714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
724af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern UINT8    BootMaintenanceManagerBin[];
734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Below are the number of options in Baudrate, Databits,
764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Parity and Stopbits selection for serial ports.
774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_COM_ATTR_BUADRATE  19
794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_COM_ATTR_DATABITS  4
804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_COM_ATTR_PARITY    5
814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_COM_ATTR_STOPBITS  3
824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Callback function helper
854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BMM_CALLBACK_DATA_SIGNATURE     SIGNATURE_32 ('C', 'b', 'c', 'k')
874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BMM_CALLBACK_DATA_FROM_THIS(a)  CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Enumeration type definition
914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef UINT8 BBS_TYPE;
934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef enum _TYPE_OF_TERMINAL {
954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  TerminalTypePcAnsi                = 0,
964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  TerminalTypeVt100,
974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  TerminalTypeVt100Plus,
984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  TerminalTypeVtUtf8,
994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  TerminalTypeTtyTerm
1004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} TYPE_OF_TERMINAL;
1014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// All of the signatures that will be used in list structure
1044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_MENU_OPTION_SIGNATURE      SIGNATURE_32 ('m', 'e', 'n', 'u')
1064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_LOAD_OPTION_SIGNATURE      SIGNATURE_32 ('l', 'o', 'a', 'd')
1074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_CONSOLE_OPTION_SIGNATURE   SIGNATURE_32 ('c', 'n', 's', 'l')
1084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_FILE_OPTION_SIGNATURE      SIGNATURE_32 ('f', 'i', 'l', 'e')
1094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_HANDLE_OPTION_SIGNATURE    SIGNATURE_32 ('h', 'n', 'd', 'l')
1104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_TERMINAL_OPTION_SIGNATURE  SIGNATURE_32 ('t', 'r', 'm', 'l')
1114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_MENU_ENTRY_SIGNATURE       SIGNATURE_32 ('e', 'n', 't', 'r')
1124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_LOAD_CONTEXT_SELECT        0x0
1144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_CONSOLE_CONTEXT_SELECT     0x1
1154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_FILE_CONTEXT_SELECT        0x2
1164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_HANDLE_CONTEXT_SELECT      0x3
1174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_TERMINAL_CONTEXT_SELECT    0x5
1184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_CONSOLE_IN_CONTEXT_SELECT  0x6
1204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
1214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
1224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Buffer size for update data
1254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define UPDATE_DATA_SIZE        0x100000
1274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Namespace of callback keys used in display and file system navigation
1304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define MAX_BBS_OFFSET          0xE000
1324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define NET_OPTION_OFFSET       0xD800
1334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BEV_OPTION_OFFSET       0xD000
1344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FD_OPTION_OFFSET        0xC000
1354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define HD_OPTION_OFFSET        0xB000
1364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CD_OPTION_OFFSET        0xA000
1374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FILE_OPTION_OFFSET      0x8000
1384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FILE_OPTION_MASK        0x7FFF
1394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define HANDLE_OPTION_OFFSET    0x7000
1404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CONSOLE_OPTION_OFFSET   0x6000
1414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define TERMINAL_OPTION_OFFSET  0x5000
1424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CONFIG_OPTION_OFFSET    0x1200
1434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_OFFSET        0x1100
1444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_ID_OFFSET          0x1000
1454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// VarOffset that will be used to create question
1484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// all these values are computed from the structure
1494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// defined below
1504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define VAR_OFFSET(Field)              ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))
1524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Question Id of Zero is invalid, so add an offset to it
1554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
1564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define QUESTION_ID(Field)             (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
1574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_TIME_OUT_VAR_OFFSET        VAR_OFFSET (BootTimeOut)
1594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_NEXT_VAR_OFFSET            VAR_OFFSET (BootNext)
1604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_BAUD_RATE_VAR_OFFSET       VAR_OFFSET (COM1BaudRate)
1614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_DATA_RATE_VAR_OFFSET       VAR_OFFSET (COM1DataRate)
1624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_STOP_BITS_VAR_OFFSET       VAR_OFFSET (COM1StopBits)
1634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_PARITY_VAR_OFFSET          VAR_OFFSET (COM1Parity)
1644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_TERMINAL_VAR_OFFSET        VAR_OFFSET (COM2TerminalType)
1654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_BAUD_RATE_VAR_OFFSET       VAR_OFFSET (COM2BaudRate)
1664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_DATA_RATE_VAR_OFFSET       VAR_OFFSET (COM2DataRate)
1674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_STOP_BITS_VAR_OFFSET       VAR_OFFSET (COM2StopBits)
1684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_PARITY_VAR_OFFSET          VAR_OFFSET (COM2Parity)
1694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_TERMINAL_VAR_OFFSET        VAR_OFFSET (COM2TerminalType)
1704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRV_ADD_HANDLE_DESC_VAR_OFFSET  VAR_OFFSET (DriverAddHandleDesc)
1714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRV_ADD_ACTIVE_VAR_OFFSET       VAR_OFFSET (DriverAddActive)
1724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRV_ADD_RECON_VAR_OFFSET        VAR_OFFSET (DriverAddForceReconnect)
1734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_IN_COM1_VAR_OFFSET          VAR_OFFSET (ConsoleInputCOM1)
1744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_IN_COM2_VAR_OFFSET          VAR_OFFSET (ConsoleInputCOM2)
1754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_OUT_COM1_VAR_OFFSET         VAR_OFFSET (ConsoleOutputCOM1)
1764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_OUT_COM2_VAR_OFFSET         VAR_OFFSET (ConsoleOutputCOM2)
1774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_ERR_COM1_VAR_OFFSET         VAR_OFFSET (ConsoleErrorCOM1)
1784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_ERR_COM2_VAR_OFFSET         VAR_OFFSET (ConsoleErrorCOM2)
1794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_MODE_VAR_OFFSET             VAR_OFFSET (ConsoleOutMode)
1804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_DEVICE_VAR_OFFSET           VAR_OFFSET (ConsoleCheck)
1814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_IN_DEVICE_VAR_OFFSET        VAR_OFFSET (ConsoleInCheck)
1824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_OUT_DEVICE_VAR_OFFSET       VAR_OFFSET (ConsoleOutCheck)
1834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_ERR_DEVICE_VAR_OFFSET       VAR_OFFSET (ConsoleErrCheck)
1844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_OPTION_ORDER_VAR_OFFSET    VAR_OFFSET (BootOptionOrder)
1854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRIVER_OPTION_ORDER_VAR_OFFSET  VAR_OFFSET (DriverOptionOrder)
1864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_OPTION_DEL_VAR_OFFSET      VAR_OFFSET (BootOptionDel)
1874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRIVER_OPTION_DEL_VAR_OFFSET    VAR_OFFSET (DriverOptionDel)
1884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRIVER_ADD_OPTION_VAR_OFFSET    VAR_OFFSET (DriverAddHandleOptionalData)
1894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_BAUD_RATE_VAR_OFFSET        VAR_OFFSET (COMBaudRate)
1904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_DATA_RATE_VAR_OFFSET        VAR_OFFSET (COMDataRate)
1914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_STOP_BITS_VAR_OFFSET        VAR_OFFSET (COMStopBits)
1924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_PARITY_VAR_OFFSET           VAR_OFFSET (COMParity)
1934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_TERMINAL_VAR_OFFSET         VAR_OFFSET (COMTerminalType)
1944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_FLOWCONTROL_VAR_OFFSET      VAR_OFFSET (COMFlowControl)
1954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_TIME_OUT_QUESTION_ID       QUESTION_ID (BootTimeOut)
1974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_NEXT_QUESTION_ID           QUESTION_ID (BootNext)
1984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM1BaudRate)
1994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_DATA_RATE_QUESTION_ID      QUESTION_ID (COM1DataRate)
2004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_STOP_BITS_QUESTION_ID      QUESTION_ID (COM1StopBits)
2014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_PARITY_QUESTION_ID         QUESTION_ID (COM1Parity)
2024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM1_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
2034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM2BaudRate)
2044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_DATA_RATE_QUESTION_ID      QUESTION_ID (COM2DataRate)
2054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_STOP_BITS_QUESTION_ID      QUESTION_ID (COM2StopBits)
2064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_PARITY_QUESTION_ID         QUESTION_ID (COM2Parity)
2074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM2_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
2084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
2094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRV_ADD_ACTIVE_QUESTION_ID      QUESTION_ID (DriverAddActive)
2104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRV_ADD_RECON_QUESTION_ID       QUESTION_ID (DriverAddForceReconnect)
2114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_IN_COM1_QUESTION_ID         QUESTION_ID (ConsoleInputCOM1)
2124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_IN_COM2_QUESTION_ID         QUESTION_ID (ConsoleInputCOM2)
2134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_OUT_COM1_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM1)
2144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_OUT_COM2_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM2)
2154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_ERR_COM1_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM1)
2164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_ERR_COM2_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM2)
2174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_MODE_QUESTION_ID            QUESTION_ID (ConsoleOutMode)
2184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_DEVICE_QUESTION_ID          QUESTION_ID (ConsoleCheck)
2194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_IN_DEVICE_QUESTION_ID       QUESTION_ID (ConsoleInCheck)
2204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_OUT_DEVICE_QUESTION_ID      QUESTION_ID (ConsoleOutCheck)
2214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define CON_ERR_DEVICE_QUESTION_ID      QUESTION_ID (ConsoleErrCheck)
2224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_OPTION_ORDER_QUESTION_ID   QUESTION_ID (BootOptionOrder)
2234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionOrder)
2244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_OPTION_DEL_QUESTION_ID     QUESTION_ID (BootOptionDel)
2254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRIVER_OPTION_DEL_QUESTION_ID   QUESTION_ID (DriverOptionDel)
2264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define DRIVER_ADD_OPTION_QUESTION_ID   QUESTION_ID (DriverAddHandleOptionalData)
2274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_BAUD_RATE_QUESTION_ID       QUESTION_ID (COMBaudRate)
2284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_DATA_RATE_QUESTION_ID       QUESTION_ID (COMDataRate)
2294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_STOP_BITS_QUESTION_ID       QUESTION_ID (COMStopBits)
2304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_PARITY_QUESTION_ID          QUESTION_ID (COMParity)
2314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_TERMINAL_QUESTION_ID        QUESTION_ID (COMTerminalType)
2324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define COM_FLOWCONTROL_QUESTION_ID     QUESTION_ID (COMFlowControl)
2334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define STRING_DEPOSITORY_NUMBER        8
2354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
236f79865264f58cc12e3ace3b83cbea1ee289a5e55Dandan Bi#define NONE_BOOTNEXT_VALUE             (0xFFFF + 1)
237f79865264f58cc12e3ace3b83cbea1ee289a5e55Dandan Bi
2384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi///
2394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// Serial Ports attributes, first one is the value for
2404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// return from callback function, stringtoken is used to
2414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// display the value properly
2424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi///
2434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
2444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN   Value;
2454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  StringToken;
2464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} COM_ATTR;
2474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
2494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT64                    BaudRate;
2504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     DataBits;
2514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     Parity;
2524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     StopBits;
2534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     BaudRateIndex;
2554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     DataBitsIndex;
2564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     ParityIndex;
2574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     StopBitsIndex;
2584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     FlowControl;
2604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     IsConIn;
2624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     IsConOut;
2634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     IsStdErr;
2644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     TerminalType;
2654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
2674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_TERMINAL_CONTEXT;
2684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
2704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   IsBootNext;
2714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   LoadOptionModified;
2724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   Deleted;
2734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   IsLegacy;
2754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   IsActive;
2764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   ForceReconnect;
2774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN                     OptionalDataSize;
2784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN                     LoadOptionSize;
2804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     *LoadOption;
2814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT32                    Attributes;
2834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16                    FilePathListLength;
2844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16                    *Description;
2854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_DEVICE_PATH_PROTOCOL  *FilePathList;
2864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8                     *OptionalData;
2874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16                    BbsIndex;
2894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_LOAD_CONTEXT;
2904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
2924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   IsActive;
2944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                   IsTerminal;
2964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
2984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_CONSOLE_CONTEXT;
2994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
3014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN   Column;
3024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN   Row;
3034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} CONSOLE_OUT_MODE;
3044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
3064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_HANDLE                        Handle;
3074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
3084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_FILE_HANDLE                   FHandle;
3094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16                            *FileName;
3104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_FILE_SYSTEM_VOLUME_LABEL      *Info;
3114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                           IsRoot;
3134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                           IsDir;
3144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                           IsRemovableMedia;
3154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                           IsLoadFile;
3164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                           IsBootLegacy;
3174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_FILE_CONTEXT;
3184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
3204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_HANDLE                Handle;
3214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
3224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_HANDLE_CONTEXT;
3234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
3254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN           Signature;
3264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  LIST_ENTRY      Head;
3274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN           MenuNumber;
3284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_MENU_OPTION;
3294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
3314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN           Signature;
3324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  LIST_ENTRY      Link;
3334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN           OptionNumber;
3344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16          *DisplayString;
3354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16          *HelpString;
3364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_STRING_ID   DisplayStringToken;
3374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_STRING_ID   HelpStringToken;
3384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN           ContextSelection;
3394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID            *VariableContext;
3404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BM_MENU_ENTRY;
3414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
3434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN                          Signature;
3454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_HII_HANDLE                 BmmHiiHandle;
3474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_HANDLE                     BmmDriverHandle;
3484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  ///
3494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  /// Boot Maintenance  Manager Produced protocols
3504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  ///
3514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess;
3524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_FORM_BROWSER2_PROTOCOL     *FormBrowser2;
3534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_MENU_ENTRY                  *MenuEntry;
3554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_HANDLE_CONTEXT              *HandleContext;
3564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_FILE_CONTEXT                *FileContext;
3574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_LOAD_CONTEXT                *LoadContext;
3584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_TERMINAL_CONTEXT            *TerminalContext;
3594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN                          CurrentTerminal;
3604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BBS_TYPE                       BbsType;
3614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
3634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // BMM main formset callback data.
3644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
3654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_FORM_ID                    BmmCurrentPageId;
3674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  EFI_FORM_ID                    BmmPreviousPageId;
3684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN                        BmmAskSaveOrNot;
3694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BMM_FAKE_NV_DATA               BmmFakeNvData;
3704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BMM_FAKE_NV_DATA               BmmOldFakeNVData;
3714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BMM_CALLBACK_DATA;
3734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
3754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Find drivers that will be added as Driver#### variables from handles
3774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  in current system environment
3784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  All valid handles in the system except those consume SimpleFs, LoadFile
3794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  are stored in DriverMenu for future use.
3804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS The function complets successfully.
3824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return Other value if failed to build the DriverMenu.
3834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
3854af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
3864af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_FindDrivers (
3874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
3884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
3894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
3914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Build the BootOptionMenu according to BootOrder Variable.
3934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This Routine will access the Boot#### to get EFI_LOAD_OPTION.
3944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData The BMM context data.
3964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The number of the Var Boot####.
3984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
3994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4004af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
4014af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_GetBootOptions (
4024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA         *CallbackData
4034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Build up all DriverOptionMenu
4084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData The BMM context data.
4104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return EFI_SUCESS The functin completes successfully.
4124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES Not enough memory to compete the operation.
4134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4164af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
4174af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_GetDriverOptions (
4184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA         *CallbackData
4194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Free resources allocated in Allocate Rountine.
4234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param FreeMenu        Menu to be freed
4254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4274af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
4284af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_FreeMenu (
4294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_MENU_OPTION        *FreeMenu
4304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get the Option Number that has not been allocated for use.
4354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Type  The type of Option.
4374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The available Option Number.
4394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4414af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUINT16
4424af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_GetOptionNumber (
4434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  CHAR16        *Type
4444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get the Option Number for Boot#### that does not used.
4494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The available Option Number.
4514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4534af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUINT16
4544af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_GetBootOptionNumber (
4554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
4564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4604af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGet the Option Number for Driver#### that does not used.
4614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi@return The unused Option Number.
4634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4654af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUINT16
4664af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_GetDriverOptionNumber (
4674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
4684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create a menu entry give a Menu type.
4724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param MenuType        The Menu type to be created.
4744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval NULL           If failed to create the menu.
4774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return                The menu.
4784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4804af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBM_MENU_ENTRY                     *
4814af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_CreateMenuEntry (
4824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN           MenuType
4834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Free up all resource allocated for a BM_MENU_ENTRY.
4874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param MenuEntry   A pointer to BM_MENU_ENTRY.
4894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
4914af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
4924af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_DestroyMenuEntry (
4934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_MENU_ENTRY         *MenuEntry
4944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
4954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
4974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get the Menu Entry from the list in Menu Entry List.
4984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
4994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  If MenuNumber is great or equal to the number of Menu
5004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Entry in the list, then ASSERT.
5014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param MenuOption      The Menu Entry List to read the menu entry.
5034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param MenuNumber      The index of Menu Entry.
5044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The Menu Entry.
5064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5084af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBM_MENU_ENTRY                     *
5094af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOpt_GetMenuEntry (
5104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BM_MENU_OPTION      *MenuOption,
5114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINTN               MenuNumber
5124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get option number according to Boot#### and BootOrder variable.
5164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  The value is saved as #### + 1.
5174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
5194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5204af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
5214af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetBootOrder (
5224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
5234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get driver option order from globalc DriverOptionMenu.
5274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
5294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5314af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
5324af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetDriverOrder (
5334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
5344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Locate all serial io devices for console
5384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Build a list containing all serial devices.
5414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS The function complete successfully.
5434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_UNSUPPORTED No serial ports present.
5444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5464af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
5474af04335ac9aeb1802b995b102117b6f9de46809Dandan BiLocateSerialIo (
5484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
5494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Initializing Console menu
5534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Build up ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu
5564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function always complete successfully.
5584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5604af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
5614af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetAllConsoles(
5624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
5634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Get current mode information
5674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get mode number according to column and row
5704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
5724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5734af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
5744af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetConsoleOutMode (
5754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
5764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Cleaning up console menu
5804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
5814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Free ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu
5834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function always complete successfully.
5854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5864af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
5874af04335ac9aeb1802b995b102117b6f9de46809Dandan BiFreeAllConsoles (
5884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
5894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
5904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
5924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Update the device path that describing a terminal device
5934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  based on the new BaudRate, Data Bits, parity and Stop Bits
5944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  set.
5954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevicePath     The devicepath protocol instance wanted to be updated.
5974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
5984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
5994af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
6004af04335ac9aeb1802b995b102117b6f9de46809Dandan BiChangeVariableDevicePath (
6014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN OUT EFI_DEVICE_PATH_PROTOCOL  *DevicePath
6024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
6034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
6054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Update the multi-instance device path of Terminal Device based on
6064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  the global TerminalMenu. If ChangeTernimal is TRUE, the terminal
6074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  device path in the Terminal Device in TerminalMenu is also updated.
6084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevicePath      The multi-instance device path.
6104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param ChangeTerminal  TRUE, then device path in the Terminal Device
6114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         in TerminalMenu is also updated; FALSE, no update.
6124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return EFI_SUCCESS    The function completes successfully.
6144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
6164af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
6174af04335ac9aeb1802b995b102117b6f9de46809Dandan BiChangeTerminalDevicePath (
6184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN OUT EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
6194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BOOLEAN                   ChangeTerminal
6204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
6214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
6234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Variable operation by menu selection
6244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
6254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
6264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function create a currently loaded Boot Option from
6274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  the BMM. It then appends this Boot Option to the end of
6284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  the "BootOrder" list. It also append this Boot Opotion to the end
6294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  of BootOptionMenu.
6304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData           The BMM context data.
6324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES  If not enought memory to complete the operation.
6344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS           If function completes successfully.
6354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
6374af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
6384af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateBootOption (
6394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA                   *CallbackData
6404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
6414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
6434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Delete Boot Option that represent a Deleted state in BootOptionMenu.
6444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  After deleting this boot option, call Var_ChangeBootOrder to
6454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  make sure BootOrder is in valid state.
6464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS   If all boot load option EFI Variables corresponding to
6484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                        BM_LOAD_CONTEXT marked for deletion is deleted
6494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return Others        If failed to update the "BootOrder" variable after deletion.
6504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
6524af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
6534af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_DelBootOption (
6544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
6554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
6564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
6584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  After any operation on Boot####, there will be a discrepancy in BootOrder.
6594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Since some are missing but in BootOrder, while some are present but are
6604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  not reflected by BootOrder. Then a function rebuild BootOrder from
6614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  scratch by content from BootOptionMenu is needed.
6624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_SUCCESS  The boot order is updated successfully.
6644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return  other than EFI_SUCCESS if failed to change the "BootOrder" EFI Variable.
6654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
6674af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
6684af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_ChangeBootOrder (
6694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
6704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
6714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
6734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function create a currently loaded Drive Option from
6744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  the BMM. It then appends this Driver Option to the end of
6754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  the "DriverOrder" list. It append this Driver Opotion to the end
6764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  of DriverOptionMenu.
6774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
6794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param HiiHandle       The HII handle associated with the BMM formset.
6804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DescriptionData The description of this driver option.
6814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param OptionalData    The optional load option.
6824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param ForceReconnect  If to force reconnect.
6834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES If not enought memory to complete the operation.
6854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS          If function completes successfully.
6864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
6884af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
6894af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateDriverOption (
6904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA         *CallbackData,
6914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  EFI_HII_HANDLE            HiiHandle,
6924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  UINT16                    *DescriptionData,
6934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  UINT16                    *OptionalData,
6944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  UINT8                     ForceReconnect
6954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
6964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
6974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
6984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Delete Load Option that represent a Deleted state in BootOptionMenu.
6994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  After deleting this Driver option, call Var_ChangeDriverOrder to
7004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  make sure DriverOrder is in valid state.
7014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS Load Option is successfully updated.
7034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return Other value than EFI_SUCCESS if failed to update "Driver Order" EFI
7044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi          Variable.
7054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7074af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7084af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_DelDriverOption (
7094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
7104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  After any operation on Driver####, there will be a discrepancy in
7144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  DriverOrder. Since some are missing but in DriverOrder, while some
7154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  are present but are not reflected by DriverOrder. Then a function
7164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  rebuild DriverOrder from scratch by content from DriverOptionMenu is
7174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  needed.
7184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_SUCCESS  The driver order is updated successfully.
7204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return  other than EFI_SUCCESS if failed to set the "DriverOrder" EFI Variable.
7214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7234af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7244af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_ChangeDriverOrder (
7254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
7264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function delete and build multi-instance device path ConIn
7304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  console device.
7314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function complete successfully.
7334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
7344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7354af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7364af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateConsoleInpOption (
7374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
7384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function delete and build multi-instance device path ConOut console device.
7424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function complete successfully.
7444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
7454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7464af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7474af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateConsoleOutOption (
7484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
7494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function delete and build multi-instance device path ErrOut console device.
7534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function complete successfully.
7554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
7564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7574af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7584af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateErrorOutOption (
7594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
7604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function delete and build Out of Band console device.
7644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param   MenuIndex   Menu index which user select in the terminal menu list.
7664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function complete successfully.
7684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
7694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7704af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7714af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateOutOfBandOption (
7724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  UINT16           MenuIndex
7734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Update the device path of "ConOut", "ConIn" and "ErrOut" based on the new BaudRate, Data Bits,
7774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  parity and stop Bits set.
7784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7804af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
7814af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateAllConsoleOption (
7824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
7834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
7844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
7864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function update the "BootNext" EFI Variable. If there is no "BootNex" specified in BMM,
7874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  this EFI Variable is deleted.
7884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  It also update the BMM context data specified the "BootNext" value.
7894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
7914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS    The function complete successfully.
7934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
7944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
7954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
7964af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
7974af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateBootNext (
7984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA            *CallbackData
7994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function update the "BootOrder" EFI Variable based on BMM Formset's NV map. It then refresh
8034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BootOptionMenu with the new "BootOrder" list.
8044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData           The BMM context data.
8064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS           The function complete successfully.
8084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES  Not enough memory to complete the function.
8094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return not The EFI variable can not be saved. See gRT->SetVariable for detail return information.
8104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8124af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
8134af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateBootOrder (
8144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA            *CallbackData
8154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function update the "DriverOrder" EFI Variable based on
8194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BMM Formset's NV map. It then refresh DriverOptionMenu
8204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  with the new "DriverOrder" list.
8214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
8234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS           The function complete successfully.
8254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES  Not enough memory to complete the function.
8264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
8274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8294af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
8304af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateDriverOrder (
8314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA            *CallbackData
8324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Update the Text Mode of Console.
8364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData  The context data for BMM.
8384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCSS If the Text Mode of Console is updated.
8404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return Other value if the Text Mode of Console is not updated.
8414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8434af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
8444af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVar_UpdateConMode (
8454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA            *CallbackData
8464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
8494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Following are page create and refresh functions
8504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
8514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi Create the global UpdateData structure.
8534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8554af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
8564af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCreateUpdateData (
8574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
8584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Refresh the global UpdateData structure.
8624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8644af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
8654af04335ac9aeb1802b995b102117b6f9de46809Dandan BiRefreshUpdateData (
8664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
8674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Clean up the dynamic opcode at label and form specified by
8714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  both LabelId.
8724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param LabelId         It is both the Form ID and Label ID for
8744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         opcode deletion.
8754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
8764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8784af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
8794af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCleanUpPage (
8804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN UINT16                           LabelId,
8814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
8824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create a lit of boot option from global BootOptionMenu. It
8864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  allow user to delete the boot option.
8874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
8894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
8914af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
8924af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateBootDelPage (
8934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
8944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
8954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
8974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create a lit of driver option from global DriverMenu.
8984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
8994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9014af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9024af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateDrvAddHandlePage (
9034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create a lit of driver option from global DriverOptionMenu. It
9084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  allow user to delete the driver option.
9094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9124af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9134af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateDrvDelPage (
9144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Prepare the page to allow user to add description for a Driver Option.
9194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9224af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9234af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateDriverAddHandleDescPage (
9244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Dispatch the correct update page function to call based on the UpdatePageId.
9294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param UpdatePageId    The form ID.
9314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9334af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9344af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdatePageBody (
9354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN UINT16                           UpdatePageId,
9364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create the dynamic page to allow user to set the "BootNext" vaule.
9414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9444af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9454af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateBootNextPage (
9464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create the dynamic page to allow user to set the "TimeOut" vaule.
9514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9544af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9554af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateTimeOutPage (
9564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create the dynamic page which allows user to set the property such as Baud Rate, Data Bits,
9614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Parity, Stop Bits, Terminal Type.
9624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9654af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9664af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateTerminalPage (
9674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Refresh the text mode page
9724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9754af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9764af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateConModePage (
9774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create a list of Goto Opcode for all terminal devices logged
9824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  by TerminaMenu. This list will be inserted to form FORM_CON_COM_SETUP_ID.
9834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9864af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
9874af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateConCOMPage (
9884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN BMM_CALLBACK_DATA                *CallbackData
9894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
9904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
9924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi Update add boot/driver option page.
9934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
9954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param FormId             The form ID to be updated.
9964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevicePath       Device path.
9974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
9984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
9994af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
10004af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdateOptionPage(
10014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN   BMM_CALLBACK_DATA        *CallbackData,
10024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN   EFI_FORM_ID              FormId,
10034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN   EFI_DEVICE_PATH_PROTOCOL *DevicePath
10044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
10054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
10074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Function deletes the variable specified by VarName and VarGuid.
10084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param VarName            A Null-terminated Unicode string that is
10114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                            the name of the vendor's variable.
10124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param VarGuid            A unique identifier for the vendor.
10144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_SUCCESS           The variable was found and removed
10164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_UNSUPPORTED       The variable store was inaccessible
10174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_OUT_OF_RESOURCES  The temporary buffer was not available
10184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_NOT_FOUND         The variable was not found
10194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
10214af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
10224af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEfiLibDeleteVariable (
10234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN CHAR16   *VarName,
10244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_GUID *VarGuid
10254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
10264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
10284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Function is used to determine the number of device path instances
10294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  that exist in a device path.
10304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevicePath      A pointer to a device path data structure.
10334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return This function counts and returns the number of device path instances
10354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi          in DevicePath.
10364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
10384af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUINTN
10394af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEfiDevicePathInstanceCount (
10404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_DEVICE_PATH_PROTOCOL      *DevicePath
10414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
10424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
10444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get a string from the Data Hub record based on
10454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  a device path.
10464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevPath         The device Path.
10484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return A string located from the Data Hub records based on
10504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi          the device path.
10514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval NULL  If failed to get the String from Data Hub.
10524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
10544af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUINT16 *
10554af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEfiLibStrFromDatahub (
10564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_DEVICE_PATH_PROTOCOL                 *DevPath
10574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
10584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
10604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Get the index number (#### in Boot####) for the boot option pointed to a BBS legacy device type
10614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  specified by DeviceType.
10624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DeviceType      The legacy device type. It can be floppy, network, harddisk, cdrom,
10644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         etc.
10654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param OptionIndex     Returns the index number (#### in Boot####).
10664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param OptionSize      Return the size of the Boot### variable.
10674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
10694af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID *
10704af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetLegacyBootOptionVar (
10714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  UINTN                            DeviceType,
10724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  OUT UINTN                            *OptionIndex,
10734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  OUT UINTN                            *OptionSize
10744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
10754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
10774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Discard all changes done to the BMM pages such as Boot Order change,
10784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Driver order change.
10794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Private         The BMM context data.
10814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CurrentFakeNVMap The current Fack NV Map.
10824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
10844af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
10854af04335ac9aeb1802b995b102117b6f9de46809Dandan BiDiscardChangeHandler (
10864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA               *Private,
10874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap
10884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
10894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
10914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Dispatch the display to the next page based on NewPageId.
10924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Private         The BMM context data.
10944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param NewPageId       The original page ID.
10954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
10964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
10974af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
10984af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUpdatePageId (
10994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BMM_CALLBACK_DATA              *Private,
11004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16                         NewPageId
11014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Remove the installed BootMaint and FileExplorer HiiPackages.
11054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11074af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
11084af04335ac9aeb1802b995b102117b6f9de46809Dandan BiFreeBMPackage(
11094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
11104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Install BootMaint and FileExplorer HiiPackages.
11144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11164af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
11174af04335ac9aeb1802b995b102117b6f9de46809Dandan BiInitBootMaintenance(
11184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  VOID
11194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Initialize console input device check box to ConsoleInCheck[MAX_MENU_NUMBER]
11244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  in BMM_FAKE_NV_DATA structure.
11254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
11274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11294af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
11304af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetConsoleInCheck (
11314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
11324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Initialize console output device check box to ConsoleOutCheck[MAX_MENU_NUMBER]
11374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  in BMM_FAKE_NV_DATA structure.
11384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
11404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11424af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
11434af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetConsoleOutCheck (
11444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
11454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Initialize standard error output device check box to ConsoleErrCheck[MAX_MENU_NUMBER]
11504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  in BMM_FAKE_NV_DATA structure.
11514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
11534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11554af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
11564af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetConsoleErrCheck (
11574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
11584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Initialize terminal attributes (baudrate, data rate, stop bits, parity and terminal type)
11634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  to BMM_FAKE_NV_DATA structure.
11644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param CallbackData    The BMM context data.
11664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11684af04335ac9aeb1802b995b102117b6f9de46809Dandan BiVOID
11694af04335ac9aeb1802b995b102117b6f9de46809Dandan BiGetTerminalAttribute (
11704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  BMM_CALLBACK_DATA    *CallbackData
11714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function will change video resolution and text mode
11754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  according to defined setup mode or defined boot mode
11764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode.
11784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_SUCCESS  Mode is changed successfully.
11804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  Others             Mode failed to be changed.
11814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11834af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
11844af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFIAPI
11854af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBmmBdsSetConsoleMode (
11864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN  IsSetupMode
11874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
11884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
11914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function converts an input device structure to a Unicode string.
11924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevPath       A pointer to the device path structure.
11944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return              A new allocated Unicode string that represents the device path.
11964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
11974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
11984af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCHAR16 *
11994af04335ac9aeb1802b995b102117b6f9de46809Dandan BiUiDevicePathToStr (
12004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_DEVICE_PATH_PROTOCOL     *DevPath
12014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
12024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
12044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Extract filename from device path. The returned buffer is allocated using AllocateCopyPool.
12054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  The caller is responsible for freeing the allocated buffer using FreePool().
12064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param DevicePath      Device path.
12084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @return                A new allocated string that represents the file name.
12104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
12124af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCHAR16 *
12134af04335ac9aeb1802b995b102117b6f9de46809Dandan BiExtractFileNameFromDevicePath (
12144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN   EFI_DEVICE_PATH_PROTOCOL *DevicePath
12154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
12164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
12184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function allows a caller to extract the current configuration for one
12194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  or more named elements from the target driver.
12204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
12224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Request         A null-terminated Unicode string in <ConfigRequest> format.
12234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Progress        On return, points to a character in the Request string.
12244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         Points to the string's null terminator if request was successful.
12254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         Points to the most recent '&' before the first failing name/value
12264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         pair (or the beginning of the string if the failure is in the
12274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         first name/value pair) if the request was not successful.
12284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Results         A null-terminated Unicode string in <ConfigAltResp> format which
12294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         has all values filled in for the names in the Request string.
12304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                         String to be allocated by the called function.
12314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_SUCCESS            The Results is filled with the requested values.
12334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_OUT_OF_RESOURCES   Not enough memory to store the results.
12344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_INVALID_PARAMETER  Request is NULL, illegal syntax, or unknown name.
12354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval  EFI_NOT_FOUND          Routing data doesn't match any storage in this driver.
12364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
12384af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
12394af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFIAPI
12404af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBootMaintExtractConfig (
12414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
12424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  CONST EFI_STRING                       Request,
12434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  OUT EFI_STRING                             *Progress,
12444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  OUT EFI_STRING                             *Results
12454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
12464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
12484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function applies changes in a driver's configuration.
12494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Input is a Configuration, which has the routing data for this
12504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  driver followed by name / value configuration pairs. The driver
12514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  must apply those pairs to its configurable storage. If the
12524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  driver's configuration is stored in a linear block of data
12534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  and the driver's name / value pairs are in <BlockConfig>
12544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  format, it may use the ConfigToBlock helper function (above) to
12554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  simplify the job. Currently not implemented.
12564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param[in]  This                Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
12584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param[in]  Configuration       A null-terminated Unicode string in
12594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  <ConfigString> format.
12604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param[out] Progress            A pointer to a string filled in with the
12614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  offset of the most recent '&' before the
12624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  first failing name / value pair (or the
12634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  beginn ing of the string if the failure
12644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  is in the first name / value pair) or
12654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  the terminating NULL if all was
12664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  successful.
12674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS             The results have been distributed or are
12694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  awaiting distribution.
12704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the
12714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  parts of the results that must be
12724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  stored awaiting possible future
12734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  protocols.
12744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the
12754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  Results parameter would result
12764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  in this type of error.
12774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_NOT_FOUND           Target for the specified routing data
12784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                                  was not found.
12794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
12804af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
12814af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFIAPI
12824af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBootMaintRouteConfig (
12834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
12844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN CONST EFI_STRING                     Configuration,
12854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  OUT EFI_STRING                          *Progress
12864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
12874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
12894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  This function processes the results of changes in configuration.
12904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
12924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param This               Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
12934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Action             Specifies the type of action taken by the browser.
12944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param QuestionId         A unique value which is sent to the original exporting driver
12954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi                            so that it can identify the type of data to expect.
12964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Type               The type of value for the question.
12974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param Value              A pointer to the data being sent to the original exporting driver.
12984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param ActionRequest      On return, points to the action requested by the callback function.
12994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_SUCCESS           The callback successfully handled the action.
13014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the variable and its data.
13024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_DEVICE_ERROR      The variable could not be saved.
13034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_UNSUPPORTED       The specified Action is not supported by the callback.
13044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval EFI_INVALID_PARAMETER The parameter of Value or ActionRequest is invalid.
13054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
13064af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFI_STATUS
13074af04335ac9aeb1802b995b102117b6f9de46809Dandan BiEFIAPI
13084af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBootMaintCallback (
13094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL         *This,
13104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN        EFI_BROWSER_ACTION                     Action,
13114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN        EFI_QUESTION_ID                        QuestionId,
13124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN        UINT8                                  Type,
13134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN        EFI_IFR_TYPE_VALUE                     *Value,
13144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  OUT       EFI_BROWSER_ACTION_REQUEST             *ActionRequest
13154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
13164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
13184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create boot option base on the input file path info.
13194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param FilePath    Point to the file path.
13214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval TRUE   Exit caller function.
13234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval FALSE  Not exit caller function.
13244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
13264af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOOLEAN
13274af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCreateBootOptionFromFile (
13284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_DEVICE_PATH_PROTOCOL    *FilePath
13294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
13304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
13324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Create driver option base on the input file path info.
13334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param FilePath    Point to the file path.
13354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval TRUE   Exit caller function.
13374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval FALSE  Not exit caller function.
13384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
13394af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOOLEAN
13404af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCreateDriverOptionFromFile (
13414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_DEVICE_PATH_PROTOCOL    *FilePath
13424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
13434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/**
13454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  Boot the file specified by the input file path info.
13464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @param FilePath    Point to the file path.
13484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval TRUE   Exit caller function.
13504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  @retval FALSE  Not exit caller function.
13514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
13534af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBOOLEAN
13544af04335ac9aeb1802b995b102117b6f9de46809Dandan BiBootFromFile (
13554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  IN EFI_DEVICE_PATH_PROTOCOL    *FilePath
13564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  );
13574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
13594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Global variable in this program (defined in data.c)
13604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
13614af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             BootOptionMenu;
13624af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             DriverOptionMenu;
13634af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             ConsoleInpMenu;
13644af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             ConsoleOutMenu;
13654af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             ConsoleErrMenu;
13664af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             DriverMenu;
13674af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BM_MENU_OPTION             TerminalMenu;
13684af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern UINT16                     TerminalType[5];
13694af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern COM_ATTR                   BaudRateList[19];
13704af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern COM_ATTR                   DataBitsList[4];
13714af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern COM_ATTR                   ParityList[5];
13724af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern COM_ATTR                   StopBitsList[3];
13734af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern EFI_GUID                   TerminalTypeGuid[5];
13744af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern EFI_DEVICE_PATH_PROTOCOL   EndDevicePath[];
13754af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern UINT16                     mFlowControlType[2];
13764af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern UINT32                     mFlowControlValue[2];
13774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
13794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Shared IFR form update data
13804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
13814af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern VOID                        *mStartOpCodeHandle;
13824af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern VOID                        *mEndOpCodeHandle;
13834af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern EFI_IFR_GUID_LABEL          *mStartLabel;
13844af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern EFI_IFR_GUID_LABEL          *mEndLabel;
13854af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BMM_CALLBACK_DATA           gBootMaintenancePrivate;
13864af04335ac9aeb1802b995b102117b6f9de46809Dandan Biextern BMM_CALLBACK_DATA           *mBmmCallbackInfo;
13874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
13884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#endif
1389