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