2015-05-11 05:06:24 +02:00
|
|
|
/**@file
|
|
|
|
Head file for BDS Platform specific code
|
|
|
|
|
|
|
|
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
|
|
|
This program and the accompanying materials
|
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef _PLATFORM_BOOT_MANAGER_H
|
|
|
|
#define _PLATFORM_BOOT_MANAGER_H
|
|
|
|
|
|
|
|
#include <PiDxe.h>
|
|
|
|
#include <Guid/WinNtSystemConfig.h>
|
2015-08-06 10:39:30 +02:00
|
|
|
#include <Protocol/GenericMemoryTest.h>
|
2015-05-11 05:06:24 +02:00
|
|
|
#include <Protocol/WinNtThunk.h>
|
|
|
|
#include <Protocol/WinNtIo.h>
|
|
|
|
#include <Protocol/LoadedImage.h>
|
2016-08-24 10:21:50 +02:00
|
|
|
#include <Protocol/FirmwareVolume2.h>
|
2015-05-11 05:06:24 +02:00
|
|
|
|
|
|
|
#include <Library/DebugLib.h>
|
|
|
|
#include <Library/BaseMemoryLib.h>
|
|
|
|
#include <Library/UefiBootServicesTableLib.h>
|
|
|
|
#include <Library/UefiRuntimeServicesTableLib.h>
|
|
|
|
#include <Library/MemoryAllocationLib.h>
|
|
|
|
#include <Library/BaseLib.h>
|
|
|
|
#include <Library/UefiRuntimeServicesTableLib.h>
|
|
|
|
#include <Library/UefiLib.h>
|
|
|
|
#include <Library/UefiBootManagerLib.h>
|
|
|
|
#include <Library/PcdLib.h>
|
|
|
|
#include <Library/DevicePathLib.h>
|
2015-08-25 11:51:07 +02:00
|
|
|
#include <Library/HiiLib.h>
|
|
|
|
#include <Library/PrintLib.h>
|
|
|
|
#include <Library/DxeServicesLib.h>
|
2015-11-12 06:39:39 +01:00
|
|
|
#include <Library/BootLogoLib.h>
|
2015-05-11 05:06:24 +02:00
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
|
|
|
UINTN ConnectType;
|
|
|
|
} PLATFORM_CONSOLE_CONNECT_ENTRY;
|
|
|
|
|
|
|
|
extern PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole[];
|
|
|
|
|
|
|
|
#define gEndEntire \
|
|
|
|
{ \
|
|
|
|
END_DEVICE_PATH_TYPE,\
|
|
|
|
END_ENTIRE_DEVICE_PATH_SUBTYPE,\
|
|
|
|
END_DEVICE_PATH_LENGTH,\
|
|
|
|
0\
|
|
|
|
}
|
|
|
|
|
|
|
|
#define CONSOLE_OUT BIT0
|
|
|
|
#define CONSOLE_IN BIT1
|
|
|
|
#define STD_ERROR BIT2
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
VENDOR_DEVICE_PATH VendorDevicePath;
|
|
|
|
UINT32 Instance;
|
|
|
|
} WIN_NT_VENDOR_DEVICE_PATH_NODE;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Below is the platform console device path
|
|
|
|
//
|
|
|
|
typedef struct {
|
|
|
|
VENDOR_DEVICE_PATH NtBus;
|
|
|
|
WIN_NT_VENDOR_DEVICE_PATH_NODE SerialDevice;
|
|
|
|
UART_DEVICE_PATH Uart;
|
|
|
|
VENDOR_DEVICE_PATH TerminalType;
|
|
|
|
EFI_DEVICE_PATH_PROTOCOL End;
|
|
|
|
} NT_ISA_SERIAL_DEVICE_PATH;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
VENDOR_DEVICE_PATH NtBus;
|
|
|
|
WIN_NT_VENDOR_DEVICE_PATH_NODE NtGopDevice;
|
|
|
|
EFI_DEVICE_PATH_PROTOCOL End;
|
|
|
|
} NT_PLATFORM_GOP_DEVICE_PATH;
|
|
|
|
|
2015-08-25 11:51:07 +02:00
|
|
|
/**
|
|
|
|
Use SystemTable Conout to stop video based Simple Text Out consoles from going
|
|
|
|
to the video device. Put up LogoFile on every video device that is a console.
|
|
|
|
|
|
|
|
@param[in] LogoFile File name of logo to display on the center of the screen.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS ConsoleControl has been flipped to graphics and logo displayed.
|
|
|
|
@retval EFI_UNSUPPORTED Logo not found
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PlatformBootManagerEnableQuietBoot (
|
|
|
|
IN EFI_GUID *LogoFile
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Use SystemTable Conout to turn on video based Simple Text Out consoles. The
|
|
|
|
Simple Text Out screens will now be synced up with all non video output devices
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS UGA devices are back in text mode and synced up.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PlatformBootManagerDisableQuietBoot (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Perform the memory test base on the memory test intensive level,
|
|
|
|
and update the memory resource.
|
|
|
|
|
|
|
|
@param Level The memory test intensive level.
|
|
|
|
|
|
|
|
@retval EFI_STATUS Success test all the system memory and update
|
|
|
|
the memory resource
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PlatformBootManagerMemoryTest (
|
|
|
|
IN EXTENDMEM_COVERAGE_LEVEL Level
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
Show progress bar with title above it. It only works in Graphics mode.
|
|
|
|
|
|
|
|
|
|
|
|
@param TitleForeground Foreground color for Title.
|
|
|
|
@param TitleBackground Background color for Title.
|
|
|
|
@param Title Title above progress bar.
|
|
|
|
@param ProgressColor Progress bar color.
|
|
|
|
@param Progress Progress (0-100)
|
|
|
|
@param PreviousValue The previous value of the progress.
|
|
|
|
|
|
|
|
@retval EFI_STATUS Success update the progress bar
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
PlatformBootManagerShowProgress (
|
|
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,
|
|
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,
|
|
|
|
IN CHAR16 *Title,
|
|
|
|
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,
|
|
|
|
IN UINTN Progress,
|
|
|
|
IN UINTN PreviousValue
|
|
|
|
);
|
|
|
|
|
2015-05-11 05:06:24 +02:00
|
|
|
#endif // _PLATFORM_BOOT_MANAGER_H
|