Add PCD for selecting terminal type at build time

Add a fixed pointer PCD to allow build-time selection of VT100 or TTY terminal
type.  The default remains VT100 emulation.
Add support for building the ARM QEMU platforms with the TTY terminal
with the "-D TTY_TERMINAL" build option.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
[Roy Franz: minor edits: add TtyTerminal GUID, rename LINUX_TERMINAL to TTY_TERMINAL]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Roy Franz <roy.franz@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17898 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Laszlo Ersek 2015-07-09 06:24:25 +00:00 committed by lersek
parent 014f93acab
commit a51c1699c0
4 changed files with 25 additions and 4 deletions

View File

@ -15,6 +15,7 @@
[Defines] [Defines]
DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F DEFINE DEBUG_PRINT_ERROR_LEVEL = 0x8000004F
DEFINE TTY_TERMINAL = FALSE
[BuildOptions.AARCH64.EDKII.DXE_RUNTIME_DRIVER] [BuildOptions.AARCH64.EDKII.DXE_RUNTIME_DRIVER]
GCC:*_*_AARCH64_DLINK_FLAGS = --script=$(EDK_TOOLS_PATH)/Scripts/gcc-aarch64-64K-align-ld-script GCC:*_*_AARCH64_DLINK_FLAGS = --script=$(EDK_TOOLS_PATH)/Scripts/gcc-aarch64-64K-align-ld-script
@ -362,6 +363,11 @@
gEfiSecurityPkgTokenSpaceGuid.PcdRemovableMediaImageVerificationPolicy|0x04 gEfiSecurityPkgTokenSpaceGuid.PcdRemovableMediaImageVerificationPolicy|0x04
!endif !endif
!if $(TTY_TERMINAL) == TRUE
# Set terminal type to TtyTerm, the value encoded is EFI_TTY_TERM_GUID
gArmVirtTokenSpaceGuid.PcdTerminalTypeGuidBuffer|{0x80, 0x6d, 0x91, 0x7d, 0xb1, 0x5b, 0x8c, 0x45, 0xa4, 0x8f, 0xe2, 0x5f, 0xdd, 0x51, 0xef, 0x94}
!endif
[Components.common] [Components.common]
# #
# Networking stack # Networking stack

View File

@ -49,6 +49,13 @@
# #
gArmVirtTokenSpaceGuid.PcdDeviceTreeAllocationPadding|256|UINT32|0x00000002 gArmVirtTokenSpaceGuid.PcdDeviceTreeAllocationPadding|256|UINT32|0x00000002
#
# Binary representation of the GUID that determines the terminal type. The
# size must be exactly 16 bytes. The default value corresponds to
# EFI_VT_100_GUID.
#
gArmVirtTokenSpaceGuid.PcdTerminalTypeGuidBuffer|{0x65, 0x60, 0xA6, 0xDF, 0x19, 0xB4, 0xD3, 0x11, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}|VOID*|0x00000007
[PcdsDynamic, PcdsFixedAtBuild] [PcdsDynamic, PcdsFixedAtBuild]
# #
# ARM PSCI function invocations can be done either through hypervisor # ARM PSCI function invocations can be done either through hypervisor

View File

@ -35,7 +35,7 @@
typedef struct { typedef struct {
VENDOR_DEVICE_PATH SerialDxe; VENDOR_DEVICE_PATH SerialDxe;
UART_DEVICE_PATH Uart; UART_DEVICE_PATH Uart;
VENDOR_DEFINED_DEVICE_PATH Vt100; VENDOR_DEFINED_DEVICE_PATH TermType;
EFI_DEVICE_PATH_PROTOCOL End; EFI_DEVICE_PATH_PROTOCOL End;
} PLATFORM_SERIAL_CONSOLE; } PLATFORM_SERIAL_CONSOLE;
#pragma pack () #pragma pack ()
@ -67,14 +67,16 @@ STATIC PLATFORM_SERIAL_CONSOLE mSerialConsole = {
}, },
// //
// VENDOR_DEFINED_DEVICE_PATH Vt100 // VENDOR_DEFINED_DEVICE_PATH TermType
// //
{ {
{ {
MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, MESSAGING_DEVICE_PATH, MSG_VENDOR_DP,
DP_NODE_LEN (VENDOR_DEFINED_DEVICE_PATH) DP_NODE_LEN (VENDOR_DEFINED_DEVICE_PATH)
}, }
EFI_VT_100_GUID //
// Guid to be filled in dynamically
//
}, },
// //
@ -421,6 +423,8 @@ PlatformBdsPolicyBehavior (
// //
// Add the hardcoded serial console device path to ConIn, ConOut, ErrOut. // Add the hardcoded serial console device path to ConIn, ConOut, ErrOut.
// //
CopyGuid (&mSerialConsole.TermType.Guid,
PcdGetPtr (PcdTerminalTypeGuidBuffer));
BdsLibUpdateConsoleVariable (L"ConIn", BdsLibUpdateConsoleVariable (L"ConIn",
(EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL); (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL);
BdsLibUpdateConsoleVariable (L"ConOut", BdsLibUpdateConsoleVariable (L"ConOut",

View File

@ -39,6 +39,7 @@
MdeModulePkg/MdeModulePkg.dec MdeModulePkg/MdeModulePkg.dec
MdePkg/MdePkg.dec MdePkg/MdePkg.dec
OvmfPkg/OvmfPkg.dec OvmfPkg/OvmfPkg.dec
ArmVirtPkg/ArmVirtPkg.dec
[LibraryClasses] [LibraryClasses]
BaseLib BaseLib
@ -61,6 +62,9 @@
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
[Pcd]
gArmVirtTokenSpaceGuid.PcdTerminalTypeGuidBuffer
[Guids] [Guids]
gEfiFileInfoGuid gEfiFileInfoGuid
gEfiFileSystemInfoGuid gEfiFileSystemInfoGuid