mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
Pkg-Module: CorebootPayloadPkg
Initial coreboot UEFI payload code check in. It provides UEFI services on top of coreboot that allows UEFI OS boot. CorebootPayloadPkg is source code package of coreboot Payload Modules, Provides definitions of payload image's layout and lists the modules required in DSC file. It supports the following features: - Support Unified Extensible Firmware Interface (UEFI) specification 2.4. - Support Platform Initialization(PI) specification 1.3. - Support execution as a coreboot payload. - Support USB 3.0 - Support SATA/ATA devices. - Support EFI aware OS boot. The following features are not supported currently and have not been validated: - GCC Tool Chains - SMM Execution Environment - Security Boot It was tested on a Intel Bay Trail CRB platform. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Maurice Ma <maurice.ma@intel.com> Reviewed-by: Prince Agyeman <prince.agyeman@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17081 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
c6d2972645
commit
9c228fb031
91
CorebootPayloadPkg/BuildAndIntegrationInstructions.txt
Normal file
91
CorebootPayloadPkg/BuildAndIntegrationInstructions.txt
Normal file
@ -0,0 +1,91 @@
|
||||
================================================================================
|
||||
Build And Integration Instructions
|
||||
2014 June 24th
|
||||
================================================================================
|
||||
|
||||
================================================================================
|
||||
DISCLAIMER
|
||||
================================================================================
|
||||
This release note as well as the software described in it is furnished under license
|
||||
and may only be used or copied in accordance with the terms of the license. The
|
||||
information in this manual is furnished for informational use only, is subject to
|
||||
change without notice, and should not be construed as a commitment by Intel Corporation.
|
||||
Intel Corporation assumes no responsibility or liability for any errors or inaccuracies
|
||||
that may appear in this document or any software that may be provided in association
|
||||
with this document.
|
||||
Except as permitted by such license, no part of this document may be reproduced,
|
||||
stored in a retrieval system, or transmitted in any form or by any means without
|
||||
the express written consent of Intel Corporation.
|
||||
|
||||
================================================================================
|
||||
INDEX
|
||||
================================================================================
|
||||
A. INTRODUCTION
|
||||
B. HOW TO BUILD
|
||||
C. HOW TO INTEGRATE
|
||||
|
||||
================================================================================
|
||||
A. INTRODUCTION
|
||||
================================================================================
|
||||
This document provides instructions on how to build Coreboot Uefi Payload and
|
||||
how to integrate it into coreboot firmware.
|
||||
|
||||
================================================================================
|
||||
B. HOW TO BUILD
|
||||
================================================================================
|
||||
1. Run the below two commands in windows command prompt window:
|
||||
edksetup.bat
|
||||
|
||||
For debug ia32 build:
|
||||
build -a IA32 -p CorebootPayloadPkg\CorebootPayloadPkgIA32.dsc -b DEBUG -t <ToolChain>
|
||||
|
||||
For release ia32 build:
|
||||
build -a IA32 -p CorebootPayloadPkg\CorebootPayloadPkgIA32.dsc -b RELEASE -t <ToolChain>
|
||||
|
||||
For debug X64 build:
|
||||
build -a IA32 -a X64 -p CorebootPayloadPkg\CorebootPayloadPkgX64.dsc -b DEBUG -t <ToolChain>
|
||||
|
||||
For release X64 build:
|
||||
build -a IA32 -a X64 -p CorebootPayloadPkg\CorebootPayloadPkgX64.dsc -b RELEASE -t <ToolChain>
|
||||
|
||||
<ToolChain> is the EDK II build environment on your host. Currently it was tested with VS2008x64 toolchain.
|
||||
|
||||
For details about EDK II build steps, refer to http://svn.code.sf.net/p/edk2/code/branches/UDK2014/BuildNotes2.txt
|
||||
|
||||
2. If build is successfully, the payload image (UEFIPAYLOAD.fd) will be generated inside the folder of Build\CorebootPayloadPkg.
|
||||
|
||||
================================================================================
|
||||
C. HOW TO INTEGRATE
|
||||
================================================================================
|
||||
1. Copy the payload image (UEFIPAYLOAD.fd) into the top-level directory of Coreboot source tree.
|
||||
2. Run "make menuconfig" in linux console to start Coreboot configuration surface.
|
||||
3. In the Payload section,
|
||||
1) Choose "An ELF executable payload" for the option of "Add a payload".
|
||||
2) Type the path of payload image for the option of "Payload path and filename".
|
||||
3) Select the option of "Use LZMA compression for payloads".
|
||||
|
||||
4. If the graphics console is required in Coreboot UEFI payload, running VGA option rom should be enabled.
|
||||
For details:
|
||||
1) In the Device section, select the option of "Run VGA Option ROMs".
|
||||
2) In the VGA BIOS section, select the option of "Add a VGA BIOS Image", Input the path of vga bios image
|
||||
for the option of VGA BIOS path and filename, give the values of vendor id and device id for the option
|
||||
of "VGA device PCI IDs".
|
||||
3) In the Display section,
|
||||
Select the option of "Set framebuffer graphics resolution"
|
||||
Choose a right display mode for the option of "framebuffer graphics resolution".
|
||||
Note: If the boot OS is windows, please choose the display mode supporting 32 bit color.
|
||||
Select the option of "Keep VESA framebuffer"
|
||||
|
||||
5. Press ESC key to exit the Coreboot configuration surface. If there is a question prompted like "Do you wish to save your new configuration?",
|
||||
choose Yes.
|
||||
|
||||
6. Run "make" to build the coreboot firmware image.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
57
CorebootPayloadPkg/CorebootPayloadPkg.dec
Normal file
57
CorebootPayloadPkg/CorebootPayloadPkg.dec
Normal file
@ -0,0 +1,57 @@
|
||||
## @file
|
||||
# Coreboot Payload Package
|
||||
#
|
||||
# Provides drivers and definitions to create uefi payload for coreboot.
|
||||
#
|
||||
# Copyright (c) 2014, 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 that 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.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
DEC_SPECIFICATION = 0x00010005
|
||||
PACKAGE_NAME = CorebootPayloadPkg
|
||||
PACKAGE_GUID = 58ABC905-951E-472e-8590-77BA8A50BE63
|
||||
PACKAGE_VERSION = 0.1
|
||||
|
||||
[Includes]
|
||||
Include
|
||||
|
||||
[LibraryClasses]
|
||||
|
||||
[Guids]
|
||||
#
|
||||
## Defines the token space for the Coreboot Payload Package PCDs.
|
||||
#
|
||||
gUEfiCorebootPayloadPkgTokenSpaceGuid = {0x1d127ea, 0xf6f1, 0x4ef6, {0x94, 0x15, 0x8a, 0x0, 0x0, 0x93, 0xf8, 0x9d}}
|
||||
|
||||
#
|
||||
# Gop Temp
|
||||
#
|
||||
gBmpImageGuid = { 0x878AC2CC, 0x5343, 0x46F2, { 0xB5, 0x63, 0x51, 0xF8, 0x9D, 0xAF, 0x56, 0xBA } }
|
||||
|
||||
[Ppis]
|
||||
|
||||
[Protocols]
|
||||
#
|
||||
# Gop Temp
|
||||
#
|
||||
gPlatformGOPPolicyGuid = { 0xec2e931b, 0x3281, 0x48a5, { 0x81, 0x07, 0xdf, 0x8a, 0x8b, 0xed, 0x3c, 0x5d } }
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# PCD Declarations section - list of all PCDs Declared by this Package
|
||||
# Only this package should be providing the
|
||||
# declaration, other packages should not.
|
||||
#
|
||||
################################################################################
|
||||
[PcdsFixedAtBuild, PcdsPatchableInModule]
|
||||
|
||||
[PcdsDynamic, PcdsDynamicEx]
|
||||
|
278
CorebootPayloadPkg/CorebootPayloadPkg.fdf
Normal file
278
CorebootPayloadPkg/CorebootPayloadPkg.fdf
Normal file
@ -0,0 +1,278 @@
|
||||
## @file
|
||||
# Coreboot Payload Package
|
||||
#
|
||||
# Provides drivers and definitions to create uefi payload for coreboot.
|
||||
#
|
||||
# Copyright (c) 2014, 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 that 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.
|
||||
#
|
||||
##
|
||||
|
||||
################################################################################
|
||||
[FD.UefiPayload]
|
||||
BaseAddress = 0x800000|gUefiCorebootModulePkgTokenSpaceGuid.PcdPayloadFdMemBase
|
||||
Size = 0x400000|gUefiCorebootModulePkgTokenSpaceGuid.PcdPayloadFdMemSize
|
||||
ErasePolarity = 1
|
||||
BlockSize = 0x1000
|
||||
NumBlocks = 0x400
|
||||
|
||||
0x00000000|0x020000
|
||||
FV = PEIFV
|
||||
|
||||
0x00020000|0x3E0000
|
||||
FV = DXEFV
|
||||
|
||||
################################################################################
|
||||
[FV.PEIFV]
|
||||
BlockSize = 0x1000
|
||||
FvAlignment = 16
|
||||
ERASE_POLARITY = 1
|
||||
MEMORY_MAPPED = TRUE
|
||||
STICKY_WRITE = TRUE
|
||||
LOCK_CAP = TRUE
|
||||
LOCK_STATUS = TRUE
|
||||
WRITE_DISABLED_CAP = TRUE
|
||||
WRITE_ENABLED_CAP = TRUE
|
||||
WRITE_STATUS = TRUE
|
||||
WRITE_LOCK_CAP = TRUE
|
||||
WRITE_LOCK_STATUS = TRUE
|
||||
READ_DISABLED_CAP = TRUE
|
||||
READ_ENABLED_CAP = TRUE
|
||||
READ_STATUS = TRUE
|
||||
READ_LOCK_CAP = TRUE
|
||||
READ_LOCK_STATUS = TRUE
|
||||
|
||||
INF CorebootModulePkg/SecCore/SecCore.inf
|
||||
|
||||
INF MdeModulePkg/Core/Pei/PeiMain.inf
|
||||
INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
|
||||
INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
|
||||
INF CorebootModulePkg/CbSupportPei/CbSupportPei.inf
|
||||
INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
|
||||
|
||||
################################################################################
|
||||
|
||||
[FV.DXEFV]
|
||||
BlockSize = 0x1000
|
||||
FvAlignment = 16
|
||||
ERASE_POLARITY = 1
|
||||
MEMORY_MAPPED = TRUE
|
||||
STICKY_WRITE = TRUE
|
||||
LOCK_CAP = TRUE
|
||||
LOCK_STATUS = TRUE
|
||||
WRITE_DISABLED_CAP = TRUE
|
||||
WRITE_ENABLED_CAP = TRUE
|
||||
WRITE_STATUS = TRUE
|
||||
WRITE_LOCK_CAP = TRUE
|
||||
WRITE_LOCK_STATUS = TRUE
|
||||
READ_DISABLED_CAP = TRUE
|
||||
READ_ENABLED_CAP = TRUE
|
||||
READ_STATUS = TRUE
|
||||
READ_LOCK_CAP = TRUE
|
||||
READ_LOCK_STATUS = TRUE
|
||||
|
||||
#
|
||||
# DXE Phase modules
|
||||
#
|
||||
INF MdeModulePkg/Core/Dxe/DxeMain.inf
|
||||
INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
|
||||
INF IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf
|
||||
|
||||
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||
INF IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
|
||||
INF PcAtChipsetPkg/8254TimerDxe/8254Timer.inf
|
||||
INF MdeModulePkg/Universal/Metronome/Metronome.inf
|
||||
INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
|
||||
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
|
||||
INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
|
||||
INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
|
||||
INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
||||
INF MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf
|
||||
|
||||
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||
INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
|
||||
INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
|
||||
INF PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf
|
||||
INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
||||
INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
||||
INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
|
||||
INF CorebootModulePkg/CbSupportDxe/CbSupportDxe.inf
|
||||
|
||||
INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
||||
#
|
||||
# PCI Support
|
||||
#
|
||||
INF PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||
INF DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf
|
||||
|
||||
#
|
||||
# ISA Support
|
||||
#
|
||||
INF CorebootPayloadPkg/SerialDxe/SerialDxe.inf
|
||||
|
||||
#
|
||||
# Console Support
|
||||
#
|
||||
INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
|
||||
INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
|
||||
INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
|
||||
INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
|
||||
|
||||
#
|
||||
# SCSI/ATA/IDE/DISK Support
|
||||
#
|
||||
INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
|
||||
INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
|
||||
INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
||||
INF DuetPkg/SataControllerDxe/SataControllerDxe.inf
|
||||
INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
|
||||
INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
|
||||
INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
|
||||
INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
|
||||
|
||||
!if $(ARCH) == IA32
|
||||
INF RuleOverride = BINARY USE = IA32 FatBinPkg/EnhancedFatDxe/Fat.inf
|
||||
!else
|
||||
INF RuleOverride = BINARY USE = X64 FatBinPkg/EnhancedFatDxe/Fat.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
#
|
||||
INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
|
||||
INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
|
||||
INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
|
||||
INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
|
||||
INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
|
||||
INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
|
||||
|
||||
#
|
||||
# Shell
|
||||
#
|
||||
#!if $(ARCH) == IA32
|
||||
#INF RuleOverride = BINARY USE = IA32 ShellBinPkg/UefiShell/UefiShell.inf
|
||||
#!else
|
||||
#INF RuleOverride = BINARY USE = X64 ShellBinPkg/UefiShell/UefiShell.inf
|
||||
#!endif
|
||||
#
|
||||
!if $(ARCH) == IA32
|
||||
INF RuleOverride = BINARY USE = IA32 EdkShellBinPkg/FullShell/FullShell.inf
|
||||
!else
|
||||
INF RuleOverride = BINARY USE = X64 EdkShellBinPkg/FullShell/FullShell.inf
|
||||
!endif
|
||||
|
||||
FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
||||
SECTION RAW = MdeModulePkg/Logo/Logo.bmp
|
||||
}
|
||||
|
||||
#
|
||||
# Framebuffer Gop
|
||||
#
|
||||
INF CorebootPayloadPkg/FbGop/FbGop.inf
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Rules are use with the [FV] section's module INF type to define
|
||||
# how an FFS file is created for a given INF file. The following Rule are the default
|
||||
# rules for the different module type. User can add the customized rules to define the
|
||||
# content of the FFS file.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[Rule.Common.SEC]
|
||||
FILE SEC = $(NAMED_GUID) {
|
||||
PE32 PE32 Align=32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
}
|
||||
|
||||
[Rule.Common.PEI_CORE]
|
||||
FILE PEI_CORE = $(NAMED_GUID) {
|
||||
PE32 PE32 Align=32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING ="$(MODULE_NAME)" Optional
|
||||
VERSION STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.PEIM]
|
||||
FILE PEIM = $(NAMED_GUID) {
|
||||
PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
||||
PE32 PE32 Align=32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.DXE_CORE]
|
||||
FILE DXE_CORE = $(NAMED_GUID) {
|
||||
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.DXE_DRIVER]
|
||||
FILE DRIVER = $(NAMED_GUID) {
|
||||
DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
||||
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.DXE_RUNTIME_DRIVER]
|
||||
FILE DRIVER = $(NAMED_GUID) {
|
||||
DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
||||
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.UEFI_DRIVER]
|
||||
FILE DRIVER = $(NAMED_GUID) {
|
||||
DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
|
||||
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.UEFI_DRIVER.BINARY]
|
||||
FILE DRIVER = $(NAMED_GUID) {
|
||||
DXE_DEPEX DXE_DEPEX Optional |.depex
|
||||
PE32 PE32 |.efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.UEFI_APPLICATION]
|
||||
FILE APPLICATION = $(NAMED_GUID) {
|
||||
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.UEFI_APPLICATION.BINARY]
|
||||
FILE APPLICATION = $(NAMED_GUID) {
|
||||
PE32 PE32 |.efi
|
||||
UI STRING="$(MODULE_NAME)" Optional
|
||||
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
|
||||
}
|
||||
|
||||
[Rule.Common.USER_DEFINED.ACPITABLE]
|
||||
FILE FREEFORM = $(NAMED_GUID) {
|
||||
RAW ACPI |.acpi
|
||||
RAW ASL |.aml
|
||||
}
|
||||
|
||||
[Rule.Common.USER_DEFINED.CSM]
|
||||
FILE FREEFORM = $(NAMED_GUID) {
|
||||
RAW BIN |.bin
|
||||
}
|
||||
|
||||
[Rule.Common.SEC.RESET_VECTOR]
|
||||
FILE RAW = $(NAMED_GUID) {
|
||||
RAW RAW |.raw
|
||||
}
|
||||
|
360
CorebootPayloadPkg/CorebootPayloadPkgIA32.dsc
Normal file
360
CorebootPayloadPkg/CorebootPayloadPkgIA32.dsc
Normal file
@ -0,0 +1,360 @@
|
||||
## @file
|
||||
# Coreboot Payload Package
|
||||
#
|
||||
# Provides drivers and definitions to create uefi payload for coreboot.
|
||||
#
|
||||
# Copyright (c) 2014, 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 that 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.
|
||||
#
|
||||
##
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Defines Section - statements that will be processed to create a Makefile.
|
||||
#
|
||||
################################################################################
|
||||
[Defines]
|
||||
PLATFORM_NAME = CorebootPayloadPkg
|
||||
PLATFORM_GUID = F71608AB-D63D-4491-B744-A99998C8CD96
|
||||
PLATFORM_VERSION = 0.1
|
||||
DSC_SPECIFICATION = 0x00010005
|
||||
SUPPORTED_ARCHITECTURES = IA32|X64
|
||||
BUILD_TARGETS = DEBUG|RELEASE
|
||||
SKUID_IDENTIFIER = DEFAULT
|
||||
OUTPUT_DIRECTORY = Build/CorebootPayloadPkg
|
||||
FLASH_DEFINITION = CorebootPayloadPkg/CorebootPayloadPkg.fdf
|
||||
|
||||
DEFINE SECURE_BOOT_ENABLE = FALSE
|
||||
DEFINE SOURCE_DEBUG_ENABLE = FALSE
|
||||
|
||||
[BuildOptions]
|
||||
GCC:*_UNIXGCC_*_CC_FLAGS = -DMDEPKG_NDEBUG
|
||||
GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG
|
||||
INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
|
||||
MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# SKU Identification section - list of all SKU IDs supported by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[SkuIds]
|
||||
0|DEFAULT
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Library Class section - list of all Library Classes needed by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[LibraryClasses]
|
||||
#
|
||||
# Entry point
|
||||
#
|
||||
PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
|
||||
PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
|
||||
DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
|
||||
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
||||
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
|
||||
|
||||
#
|
||||
# Basic
|
||||
#
|
||||
BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
|
||||
BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
|
||||
SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
|
||||
PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
|
||||
CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
|
||||
IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf
|
||||
PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
|
||||
PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
|
||||
CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
|
||||
|
||||
#
|
||||
# UEFI & PI
|
||||
#
|
||||
UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
|
||||
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
|
||||
UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
|
||||
UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
|
||||
UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
|
||||
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
|
||||
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
||||
UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
|
||||
PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
|
||||
PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
|
||||
DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
|
||||
DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
|
||||
UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
|
||||
|
||||
#
|
||||
# Generic Modules
|
||||
#
|
||||
UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
|
||||
UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
|
||||
OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
|
||||
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
|
||||
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
|
||||
GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
|
||||
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
||||
|
||||
#
|
||||
# CPU
|
||||
#
|
||||
MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
|
||||
LocalApicLib|UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
TimerLib|CorebootPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf
|
||||
ResetSystemLib|CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf
|
||||
SerialPortLib|CorebootPayloadPkg/Library/SerialPortLib/SerialPortLib.inf
|
||||
PlatformBdsLib|CorebootPayloadPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
||||
|
||||
#
|
||||
# Misc
|
||||
#
|
||||
DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
|
||||
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE) == TRUE
|
||||
PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf
|
||||
DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf
|
||||
!else
|
||||
PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
|
||||
DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
|
||||
!endif
|
||||
CbParseLib|CorebootModulePkg/Library/CbParseLib/CbParseLib.inf
|
||||
DebugLib|IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
|
||||
|
||||
[LibraryClasses.IA32.SEC]
|
||||
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
|
||||
DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
|
||||
ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
|
||||
|
||||
[LibraryClasses.IA32.PEI_CORE, LibraryClasses.IA32.PEIM]
|
||||
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
||||
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
|
||||
ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
|
||||
!endif
|
||||
|
||||
[LibraryClasses.common.DXE_CORE]
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
|
||||
MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
|
||||
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
||||
!endif
|
||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||
|
||||
[LibraryClasses.common.DXE_DRIVER]
|
||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
|
||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||
|
||||
[LibraryClasses.common.DXE_RUNTIME_DRIVER]
|
||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
|
||||
|
||||
[LibraryClasses.common.UEFI_DRIVER,LibraryClasses.common.UEFI_APPLICATION]
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
|
||||
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd Section - list of all EDK II PCD Entries defined by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[PcdsFeatureFlag]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
|
||||
|
||||
[PcdsFixedAtBuild]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x7
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
|
||||
!else
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F
|
||||
!endif
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x10000
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x10000
|
||||
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0
|
||||
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|0x2
|
||||
!endif
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[PcdsDynamicDefault]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Components Section - list of all EDK II Modules needed by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[Components.IA32]
|
||||
#
|
||||
# SEC Core
|
||||
#
|
||||
CorebootModulePkg/SecCore/SecCore.inf
|
||||
|
||||
#
|
||||
# PEI Core
|
||||
#
|
||||
MdeModulePkg/Core/Pei/PeiMain.inf
|
||||
|
||||
#
|
||||
# PEIM
|
||||
#
|
||||
MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
|
||||
<LibraryClasses>
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
}
|
||||
IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
|
||||
|
||||
CorebootModulePkg/CbSupportPei/CbSupportPei.inf
|
||||
MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
|
||||
|
||||
[Components.IA32]
|
||||
#
|
||||
# DXE Core
|
||||
#
|
||||
MdeModulePkg/Core/Dxe/DxeMain.inf {
|
||||
<LibraryClasses>
|
||||
NULL|IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
|
||||
}
|
||||
|
||||
#
|
||||
# Components that produce the architectural protocols
|
||||
#
|
||||
MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||
IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
|
||||
PcAtChipsetPkg/8254TimerDxe/8254Timer.inf
|
||||
MdeModulePkg/Universal/Metronome/Metronome.inf
|
||||
MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
|
||||
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||
MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
|
||||
MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
|
||||
MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
|
||||
PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
||||
MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf
|
||||
|
||||
#
|
||||
# Following are the DXE drivers
|
||||
#
|
||||
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
|
||||
<LibraryClasses>
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
}
|
||||
|
||||
IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf
|
||||
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||
MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
|
||||
MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
|
||||
PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf
|
||||
MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
||||
MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
||||
MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
|
||||
|
||||
CorebootModulePkg/CbSupportDxe/CbSupportDxe.inf
|
||||
|
||||
#
|
||||
# SMBIOS Support
|
||||
#
|
||||
MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
||||
|
||||
#
|
||||
# ACPI Support
|
||||
#
|
||||
MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
|
||||
|
||||
#
|
||||
# PCI Support
|
||||
#
|
||||
PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||
DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf
|
||||
|
||||
#
|
||||
# SCSI/ATA/IDE/DISK Support
|
||||
#
|
||||
MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
|
||||
MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
|
||||
MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
||||
DuetPkg/SataControllerDxe/SataControllerDxe.inf
|
||||
MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
|
||||
MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
|
||||
MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
|
||||
MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
#
|
||||
MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
|
||||
MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
|
||||
MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
|
||||
MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
|
||||
MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
|
||||
MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
|
||||
|
||||
#
|
||||
# ISA Support
|
||||
#
|
||||
CorebootPayloadPkg/SerialDxe/SerialDxe.inf
|
||||
|
||||
#
|
||||
# Console Support
|
||||
#
|
||||
MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
|
||||
MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
|
||||
MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
|
||||
MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
|
||||
|
||||
|
||||
#
|
||||
# Framebuffer Gop
|
||||
#
|
||||
CorebootPayloadPkg/FbGop/FbGop.inf
|
||||
|
||||
|
||||
|
361
CorebootPayloadPkg/CorebootPayloadPkgX64.dsc
Normal file
361
CorebootPayloadPkg/CorebootPayloadPkgX64.dsc
Normal file
@ -0,0 +1,361 @@
|
||||
## @file
|
||||
# Coreboot Payload Package
|
||||
#
|
||||
# Provides drivers and definitions to create uefi payload for coreboot.
|
||||
#
|
||||
# Copyright (c) 2014, 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 that 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.
|
||||
#
|
||||
##
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Defines Section - statements that will be processed to create a Makefile.
|
||||
#
|
||||
################################################################################
|
||||
[Defines]
|
||||
PLATFORM_NAME = CorebootPayloadPkg
|
||||
PLATFORM_GUID = F71608AB-D63D-4491-B744-A99998C8CD96
|
||||
PLATFORM_VERSION = 0.1
|
||||
DSC_SPECIFICATION = 0x00010005
|
||||
SUPPORTED_ARCHITECTURES = IA32|X64
|
||||
BUILD_TARGETS = DEBUG|RELEASE
|
||||
SKUID_IDENTIFIER = DEFAULT
|
||||
OUTPUT_DIRECTORY = Build/CorebootPayloadPkg
|
||||
FLASH_DEFINITION = CorebootPayloadPkg/CorebootPayloadPkg.fdf
|
||||
|
||||
DEFINE SECURE_BOOT_ENABLE = FALSE
|
||||
DEFINE SOURCE_DEBUG_ENABLE = FALSE
|
||||
|
||||
[BuildOptions]
|
||||
GCC:*_UNIXGCC_*_CC_FLAGS = -DMDEPKG_NDEBUG
|
||||
GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG
|
||||
INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
|
||||
MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# SKU Identification section - list of all SKU IDs supported by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[SkuIds]
|
||||
0|DEFAULT
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Library Class section - list of all Library Classes needed by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[LibraryClasses]
|
||||
#
|
||||
# Entry point
|
||||
#
|
||||
PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
|
||||
PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
|
||||
DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
|
||||
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
||||
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
|
||||
|
||||
#
|
||||
# Basic
|
||||
#
|
||||
BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
|
||||
BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
|
||||
SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
|
||||
PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
|
||||
CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
|
||||
IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
|
||||
PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
|
||||
PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf
|
||||
PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
|
||||
PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
|
||||
CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
|
||||
|
||||
#
|
||||
# UEFI & PI
|
||||
#
|
||||
UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
|
||||
UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
|
||||
UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
|
||||
UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
|
||||
UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
|
||||
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
|
||||
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
||||
UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
|
||||
PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
|
||||
PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
|
||||
DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
|
||||
DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
|
||||
UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
|
||||
|
||||
#
|
||||
# Generic Modules
|
||||
#
|
||||
UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
|
||||
UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
|
||||
OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
|
||||
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
|
||||
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
|
||||
GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
|
||||
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
||||
|
||||
#
|
||||
# CPU
|
||||
#
|
||||
MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
|
||||
LocalApicLib|UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
|
||||
|
||||
#
|
||||
# Platform
|
||||
#
|
||||
TimerLib|CorebootPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf
|
||||
ResetSystemLib|CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf
|
||||
SerialPortLib|CorebootPayloadPkg/Library/SerialPortLib/SerialPortLib.inf
|
||||
PlatformBdsLib|CorebootPayloadPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
||||
|
||||
#
|
||||
# Misc
|
||||
#
|
||||
DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
|
||||
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE) == TRUE
|
||||
PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf
|
||||
DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf
|
||||
!else
|
||||
PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
|
||||
DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
|
||||
!endif
|
||||
CbParseLib|CorebootModulePkg/Library/CbParseLib/CbParseLib.inf
|
||||
DebugLib|IntelFrameworkModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
|
||||
LockBoxLib|MdeModulePkg/Library/LockBoxNullLib/LockBoxNullLib.inf
|
||||
|
||||
[LibraryClasses.IA32.SEC]
|
||||
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
|
||||
DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
|
||||
ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
|
||||
|
||||
[LibraryClasses.IA32.PEI_CORE, LibraryClasses.IA32.PEIM]
|
||||
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
||||
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
|
||||
ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
|
||||
!endif
|
||||
|
||||
[LibraryClasses.common.DXE_CORE]
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
|
||||
MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
|
||||
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
||||
!endif
|
||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||
|
||||
[LibraryClasses.common.DXE_DRIVER]
|
||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
|
||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||
|
||||
[LibraryClasses.common.DXE_RUNTIME_DRIVER]
|
||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
|
||||
|
||||
[LibraryClasses.common.UEFI_DRIVER,LibraryClasses.common.UEFI_APPLICATION]
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|
||||
ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
|
||||
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd Section - list of all EDK II PCD Entries defined by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[PcdsFeatureFlag]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|TRUE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
|
||||
|
||||
[PcdsFixedAtBuild]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x7
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
|
||||
!else
|
||||
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F
|
||||
!endif
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x10000
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize|0x8000
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x10000
|
||||
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0
|
||||
|
||||
!if $(SOURCE_DEBUG_ENABLE)
|
||||
gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|0x2
|
||||
!endif
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
|
||||
#
|
||||
################################################################################
|
||||
|
||||
[PcdsDynamicDefault]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
|
||||
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Components Section - list of all EDK II Modules needed by this Platform.
|
||||
#
|
||||
################################################################################
|
||||
[Components.IA32]
|
||||
#
|
||||
# SEC Core
|
||||
#
|
||||
CorebootModulePkg/SecCore/SecCore.inf
|
||||
|
||||
#
|
||||
# PEI Core
|
||||
#
|
||||
MdeModulePkg/Core/Pei/PeiMain.inf
|
||||
|
||||
#
|
||||
# PEIM
|
||||
#
|
||||
MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
|
||||
<LibraryClasses>
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
}
|
||||
IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf
|
||||
|
||||
CorebootModulePkg/CbSupportPei/CbSupportPei.inf
|
||||
MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
|
||||
|
||||
[Components.X64]
|
||||
#
|
||||
# DXE Core
|
||||
#
|
||||
MdeModulePkg/Core/Dxe/DxeMain.inf {
|
||||
<LibraryClasses>
|
||||
NULL|IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
|
||||
}
|
||||
|
||||
#
|
||||
# Components that produce the architectural protocols
|
||||
#
|
||||
MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||
IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
|
||||
PcAtChipsetPkg/8254TimerDxe/8254Timer.inf
|
||||
MdeModulePkg/Universal/Metronome/Metronome.inf
|
||||
MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
|
||||
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||
MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
|
||||
MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
|
||||
MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
|
||||
PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
||||
MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf
|
||||
|
||||
#
|
||||
# Following are the DXE drivers
|
||||
#
|
||||
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
|
||||
<LibraryClasses>
|
||||
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
|
||||
}
|
||||
|
||||
IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf
|
||||
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||
MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
|
||||
MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
|
||||
PcAtChipsetPkg/8259InterruptControllerDxe/8259.inf
|
||||
MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
|
||||
MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
|
||||
MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
|
||||
|
||||
CorebootModulePkg/CbSupportDxe/CbSupportDxe.inf
|
||||
|
||||
#
|
||||
# SMBIOS Support
|
||||
#
|
||||
MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
|
||||
|
||||
#
|
||||
# ACPI Support
|
||||
#
|
||||
MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
|
||||
|
||||
#
|
||||
# PCI Support
|
||||
#
|
||||
PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||
DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf
|
||||
|
||||
#
|
||||
# SCSI/ATA/IDE/DISK Support
|
||||
#
|
||||
MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
|
||||
MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
|
||||
MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
|
||||
DuetPkg/SataControllerDxe/SataControllerDxe.inf
|
||||
MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
|
||||
MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
|
||||
MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
|
||||
MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
#
|
||||
MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
|
||||
MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
|
||||
MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
|
||||
MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
|
||||
MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
|
||||
MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
|
||||
|
||||
#
|
||||
# ISA Support
|
||||
#
|
||||
CorebootPayloadPkg/SerialDxe/SerialDxe.inf
|
||||
|
||||
#
|
||||
# Console Support
|
||||
#
|
||||
MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
|
||||
MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
|
||||
MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
|
||||
MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
|
||||
|
||||
|
||||
#
|
||||
# Framebuffer Gop
|
||||
#
|
||||
CorebootPayloadPkg/FbGop/FbGop.inf
|
||||
|
||||
|
||||
|
313
CorebootPayloadPkg/FbGop/ComponentName.c
Normal file
313
CorebootPayloadPkg/FbGop/ComponentName.c
Normal file
@ -0,0 +1,313 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2006 - 2011, 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.
|
||||
|
||||
**/
|
||||
|
||||
#include "FbGop.h"
|
||||
|
||||
//
|
||||
// EFI Component Name Functions
|
||||
//
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the driver.
|
||||
|
||||
This function retrieves the user readable name of a driver in the form of a
|
||||
Unicode string. If the driver specified by This has a user readable name in
|
||||
the language specified by Language, then a pointer to the driver name is
|
||||
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||
by This does not support the language specified by Language,
|
||||
then EFI_UNSUPPORTED is returned.
|
||||
|
||||
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||
|
||||
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||
array indicating the language. This is the
|
||||
language of the driver name that the caller is
|
||||
requesting, and it must match one of the
|
||||
languages specified in SupportedLanguages. The
|
||||
number of languages supported by a driver is up
|
||||
to the driver writer. Language is specified
|
||||
in RFC 4646 or ISO 639-2 language code format.
|
||||
|
||||
@param DriverName[out] A pointer to the Unicode string to return.
|
||||
This Unicode string is the name of the
|
||||
driver specified by This in the language
|
||||
specified by Language.
|
||||
|
||||
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||
This and the language specified by Language was
|
||||
returned in DriverName.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||
the language specified by Language.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopComponentNameGetDriverName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **DriverName
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
|
||||
This function retrieves the user readable name of the controller specified by
|
||||
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||
driver specified by This has a user readable name in the language specified by
|
||||
Language, then a pointer to the controller name is returned in ControllerName,
|
||||
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||
managing the controller specified by ControllerHandle and ChildHandle,
|
||||
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||
|
||||
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||
|
||||
@param ControllerHandle[in] The handle of a controller that the driver
|
||||
specified by This is managing. This handle
|
||||
specifies the controller whose name is to be
|
||||
returned.
|
||||
|
||||
@param ChildHandle[in] The handle of the child controller to retrieve
|
||||
the name of. This is an optional parameter that
|
||||
may be NULL. It will be NULL for device
|
||||
drivers. It will also be NULL for a bus drivers
|
||||
that wish to retrieve the name of the bus
|
||||
controller. It will not be NULL for a bus
|
||||
driver that wishes to retrieve the name of a
|
||||
child controller.
|
||||
|
||||
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||
array indicating the language. This is the
|
||||
language of the driver name that the caller is
|
||||
requesting, and it must match one of the
|
||||
languages specified in SupportedLanguages. The
|
||||
number of languages supported by a driver is up
|
||||
to the driver writer. Language is specified in
|
||||
RFC 4646 or ISO 639-2 language code format.
|
||||
|
||||
@param ControllerName[out] A pointer to the Unicode string to return.
|
||||
This Unicode string is the name of the
|
||||
controller specified by ControllerHandle and
|
||||
ChildHandle in the language specified by
|
||||
Language from the point of view of the driver
|
||||
specified by This.
|
||||
|
||||
@retval EFI_SUCCESS The Unicode string for the user readable name in
|
||||
the language specified by Language for the
|
||||
driver specified by This was returned in
|
||||
DriverName.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||
EFI_HANDLE.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||
managing the controller specified by
|
||||
ControllerHandle and ChildHandle.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||
the language specified by Language.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// EFI Component Name Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gFbGopComponentName = {
|
||||
FbGopComponentNameGetDriverName,
|
||||
FbGopComponentNameGetControllerName,
|
||||
"eng"
|
||||
};
|
||||
|
||||
//
|
||||
// EFI Component Name 2 Protocol
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gFbGopComponentName2 = {
|
||||
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) FbGopComponentNameGetDriverName,
|
||||
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) FbGopComponentNameGetControllerName,
|
||||
"en"
|
||||
};
|
||||
|
||||
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mFbGopDriverNameTable[] = {
|
||||
{
|
||||
"eng;en",
|
||||
L"FB GOP Video Driver"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
NULL
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the driver.
|
||||
|
||||
This function retrieves the user readable name of a driver in the form of a
|
||||
Unicode string. If the driver specified by This has a user readable name in
|
||||
the language specified by Language, then a pointer to the driver name is
|
||||
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||
by This does not support the language specified by Language,
|
||||
then EFI_UNSUPPORTED is returned.
|
||||
|
||||
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||
|
||||
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||
array indicating the language. This is the
|
||||
language of the driver name that the caller is
|
||||
requesting, and it must match one of the
|
||||
languages specified in SupportedLanguages. The
|
||||
number of languages supported by a driver is up
|
||||
to the driver writer. Language is specified
|
||||
in RFC 4646 or ISO 639-2 language code format.
|
||||
|
||||
@param DriverName[out] A pointer to the Unicode string to return.
|
||||
This Unicode string is the name of the
|
||||
driver specified by This in the language
|
||||
specified by Language.
|
||||
|
||||
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||
This and the language specified by Language was
|
||||
returned in DriverName.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||
the language specified by Language.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopComponentNameGetDriverName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **DriverName
|
||||
)
|
||||
{
|
||||
return LookupUnicodeString2 (
|
||||
Language,
|
||||
This->SupportedLanguages,
|
||||
mFbGopDriverNameTable,
|
||||
DriverName,
|
||||
(BOOLEAN)(This == &gFbGopComponentName)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves a Unicode string that is the user readable name of the controller
|
||||
that is being managed by a driver.
|
||||
|
||||
This function retrieves the user readable name of the controller specified by
|
||||
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||
driver specified by This has a user readable name in the language specified by
|
||||
Language, then a pointer to the controller name is returned in ControllerName,
|
||||
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||
managing the controller specified by ControllerHandle and ChildHandle,
|
||||
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||
|
||||
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||
|
||||
@param ControllerHandle[in] The handle of a controller that the driver
|
||||
specified by This is managing. This handle
|
||||
specifies the controller whose name is to be
|
||||
returned.
|
||||
|
||||
@param ChildHandle[in] The handle of the child controller to retrieve
|
||||
the name of. This is an optional parameter that
|
||||
may be NULL. It will be NULL for device
|
||||
drivers. It will also be NULL for a bus drivers
|
||||
that wish to retrieve the name of the bus
|
||||
controller. It will not be NULL for a bus
|
||||
driver that wishes to retrieve the name of a
|
||||
child controller.
|
||||
|
||||
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||
array indicating the language. This is the
|
||||
language of the driver name that the caller is
|
||||
requesting, and it must match one of the
|
||||
languages specified in SupportedLanguages. The
|
||||
number of languages supported by a driver is up
|
||||
to the driver writer. Language is specified in
|
||||
RFC 4646 or ISO 639-2 language code format.
|
||||
|
||||
@param ControllerName[out] A pointer to the Unicode string to return.
|
||||
This Unicode string is the name of the
|
||||
controller specified by ControllerHandle and
|
||||
ChildHandle in the language specified by
|
||||
Language from the point of view of the driver
|
||||
specified by This.
|
||||
|
||||
@retval EFI_SUCCESS The Unicode string for the user readable name in
|
||||
the language specified by Language for the
|
||||
driver specified by This was returned in
|
||||
DriverName.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ControllerHandle is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||
EFI_HANDLE.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||
managing the controller specified by
|
||||
ControllerHandle and ChildHandle.
|
||||
|
||||
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||
the language specified by Language.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopComponentNameGetControllerName (
|
||||
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||
IN CHAR8 *Language,
|
||||
OUT CHAR16 **ControllerName
|
||||
)
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
1532
CorebootPayloadPkg/FbGop/FbGop.c
Normal file
1532
CorebootPayloadPkg/FbGop/FbGop.c
Normal file
File diff suppressed because it is too large
Load Diff
420
CorebootPayloadPkg/FbGop/FbGop.h
Normal file
420
CorebootPayloadPkg/FbGop/FbGop.h
Normal file
@ -0,0 +1,420 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2006 - 2014, 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 _FB_GOP_H_
|
||||
#define _FB_GOP_H_
|
||||
|
||||
#include <Protocol/PciIo.h>
|
||||
#include <Protocol/DevicePath.h>
|
||||
#include <Protocol/GraphicsOutput.h>
|
||||
#include <Protocol/EdidActive.h>
|
||||
#include <Protocol/EdidDiscovered.h>
|
||||
|
||||
#include <Guid/StatusCodeDataTypeId.h>
|
||||
#include <Guid/EventGroup.h>
|
||||
#include <Guid/FrameBufferInfoGuid.h>
|
||||
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/ReportStatusCodeLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/UefiDriverEntryPoint.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
|
||||
#include <IndustryStandard/Pci.h>
|
||||
|
||||
//
|
||||
// Packed format support: The number of bits reserved for each of the colors and the actual
|
||||
// position of RGB in the frame buffer is specified in the VBE Mode information
|
||||
//
|
||||
typedef struct {
|
||||
UINT8 Position; // Position of the color
|
||||
UINT8 Mask; // The number of bits expressed as a mask
|
||||
} FB_VIDEO_COLOR_PLACEMENT;
|
||||
|
||||
//
|
||||
// BIOS Graphics Output Graphical Mode Data
|
||||
//
|
||||
typedef struct {
|
||||
UINT16 VbeModeNumber;
|
||||
UINT16 BytesPerScanLine;
|
||||
VOID *LinearFrameBuffer;
|
||||
UINTN FrameBufferSize;
|
||||
UINT32 HorizontalResolution;
|
||||
UINT32 VerticalResolution;
|
||||
UINT32 ColorDepth;
|
||||
UINT32 RefreshRate;
|
||||
UINT32 BitsPerPixel;
|
||||
FB_VIDEO_COLOR_PLACEMENT Red;
|
||||
FB_VIDEO_COLOR_PLACEMENT Green;
|
||||
FB_VIDEO_COLOR_PLACEMENT Blue;
|
||||
FB_VIDEO_COLOR_PLACEMENT Reserved;
|
||||
EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
|
||||
EFI_PIXEL_BITMASK PixelBitMask;
|
||||
} FB_VIDEO_MODE_DATA;
|
||||
|
||||
//
|
||||
// BIOS video child handle private data Structure
|
||||
//
|
||||
#define FB_VIDEO_DEV_SIGNATURE SIGNATURE_32 ('B', 'V', 'M', 'p')
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
EFI_HANDLE Handle;
|
||||
|
||||
//
|
||||
// Consumed Protocols
|
||||
//
|
||||
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||
|
||||
//
|
||||
// Produced Protocols
|
||||
//
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
|
||||
EFI_EDID_DISCOVERED_PROTOCOL EdidDiscovered;
|
||||
EFI_EDID_ACTIVE_PROTOCOL EdidActive;
|
||||
|
||||
//
|
||||
// Graphics Output Protocol related fields
|
||||
//
|
||||
UINTN CurrentMode;
|
||||
UINTN MaxMode;
|
||||
FB_VIDEO_MODE_DATA *ModeData;
|
||||
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *VbeFrameBuffer;
|
||||
|
||||
//
|
||||
// Status code
|
||||
//
|
||||
EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;
|
||||
|
||||
} FB_VIDEO_DEV;
|
||||
|
||||
#define FB_VIDEO_DEV_FROM_PCI_IO_THIS(a) CR (a, FB_VIDEO_DEV, PciIo, FB_VIDEO_DEV_SIGNATURE)
|
||||
#define FB_VIDEO_DEV_FROM_GRAPHICS_OUTPUT_THIS(a) CR (a, FB_VIDEO_DEV, GraphicsOutput, FB_VIDEO_DEV_SIGNATURE)
|
||||
|
||||
#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff
|
||||
|
||||
//
|
||||
// Global Variables
|
||||
//
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gFbGopDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gFbGopComponentName;
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gFbGopComponentName2;
|
||||
|
||||
//
|
||||
// Driver Binding Protocol functions
|
||||
//
|
||||
|
||||
/**
|
||||
Supported.
|
||||
|
||||
@param This Pointer to driver binding protocol
|
||||
@param Controller Controller handle to connect
|
||||
@param RemainingDevicePath A pointer to the remaining portion of a device
|
||||
path
|
||||
|
||||
@retval EFI_STATUS EFI_SUCCESS:This controller can be managed by this
|
||||
driver, Otherwise, this controller cannot be
|
||||
managed by this driver
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopDriverBindingSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Install Graphics Output Protocol onto VGA device handles.
|
||||
|
||||
@param This Pointer to driver binding protocol
|
||||
@param Controller Controller handle to connect
|
||||
@param RemainingDevicePath A pointer to the remaining portion of a device
|
||||
path
|
||||
|
||||
@return EFI_STATUS
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopDriverBindingStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Stop.
|
||||
|
||||
@param This Pointer to driver binding protocol
|
||||
@param Controller Controller handle to connect
|
||||
@param NumberOfChildren Number of children handle created by this driver
|
||||
@param ChildHandleBuffer Buffer containing child handle created
|
||||
|
||||
@retval EFI_SUCCESS Driver disconnected successfully from controller
|
||||
@retval EFI_UNSUPPORTED Cannot find FB_VIDEO_DEV structure
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopDriverBindingStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
//
|
||||
// Private worker functions
|
||||
//
|
||||
|
||||
/**
|
||||
Check for VBE device.
|
||||
|
||||
@param FbGopPrivate Pointer to FB_VIDEO_DEV structure
|
||||
|
||||
@retval EFI_SUCCESS VBE device found
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
FbGopCheckForVbe (
|
||||
IN OUT FB_VIDEO_DEV *FbGopPrivate
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Release resource for biso video instance.
|
||||
|
||||
@param FbGopPrivate Video child device private data structure
|
||||
|
||||
**/
|
||||
VOID
|
||||
FbGopDeviceReleaseResource (
|
||||
FB_VIDEO_DEV *FbGopPrivate
|
||||
);
|
||||
|
||||
//
|
||||
// BIOS Graphics Output Protocol functions
|
||||
//
|
||||
|
||||
/**
|
||||
Graphics Output protocol interface to get video mode.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param ModeNumber The mode number to return information on.
|
||||
@param SizeOfInfo A pointer to the size, in bytes, of the Info
|
||||
buffer.
|
||||
@param Info Caller allocated buffer that returns information
|
||||
about ModeNumber.
|
||||
|
||||
@retval EFI_SUCCESS Mode information returned.
|
||||
@retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
|
||||
@retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the
|
||||
video mode.
|
||||
@retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
|
||||
@retval EFI_INVALID_PARAMETER One of the input args was NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopGraphicsOutputQueryMode (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN UINT32 ModeNumber,
|
||||
OUT UINTN *SizeOfInfo,
|
||||
OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Graphics Output protocol interface to set video mode.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param ModeNumber The mode number to be set.
|
||||
|
||||
@retval EFI_SUCCESS Graphics mode was changed.
|
||||
@retval EFI_DEVICE_ERROR The device had an error and could not complete the
|
||||
request.
|
||||
@retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopGraphicsOutputSetMode (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,
|
||||
IN UINT32 ModeNumber
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Graphics Output protocol instance to block transfer for VBE device.
|
||||
|
||||
@param This Pointer to Graphics Output protocol instance
|
||||
@param BltBuffer The data to transfer to screen
|
||||
@param BltOperation The operation to perform
|
||||
@param SourceX The X coordinate of the source for BltOperation
|
||||
@param SourceY The Y coordinate of the source for BltOperation
|
||||
@param DestinationX The X coordinate of the destination for
|
||||
BltOperation
|
||||
@param DestinationY The Y coordinate of the destination for
|
||||
BltOperation
|
||||
@param Width The width of a rectangle in the blt rectangle in
|
||||
pixels
|
||||
@param Height The height of a rectangle in the blt rectangle in
|
||||
pixels
|
||||
@param Delta Not used for EfiBltVideoFill and
|
||||
EfiBltVideoToVideo operation. If a Delta of 0 is
|
||||
used, the entire BltBuffer will be operated on. If
|
||||
a subrectangle of the BltBuffer is used, then
|
||||
Delta represents the number of bytes in a row of
|
||||
the BltBuffer.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter passed in
|
||||
@retval EFI_SUCCESS Blt operation success
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopGraphicsOutputVbeBlt (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Grahpics Output protocol instance to block transfer for VGA device.
|
||||
|
||||
@param This Pointer to Grahpics Output protocol instance
|
||||
@param BltBuffer The data to transfer to screen
|
||||
@param BltOperation The operation to perform
|
||||
@param SourceX The X coordinate of the source for BltOperation
|
||||
@param SourceY The Y coordinate of the source for BltOperation
|
||||
@param DestinationX The X coordinate of the destination for
|
||||
BltOperation
|
||||
@param DestinationY The Y coordinate of the destination for
|
||||
BltOperation
|
||||
@param Width The width of a rectangle in the blt rectangle in
|
||||
pixels
|
||||
@param Height The height of a rectangle in the blt rectangle in
|
||||
pixels
|
||||
@param Delta Not used for EfiBltVideoFill and
|
||||
EfiBltVideoToVideo operation. If a Delta of 0 is
|
||||
used, the entire BltBuffer will be operated on. If
|
||||
a subrectangle of the BltBuffer is used, then
|
||||
Delta represents the number of bytes in a row of
|
||||
the BltBuffer.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Invalid parameter passed in
|
||||
@retval EFI_SUCCESS Blt operation success
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FbGopGraphicsOutputVgaBlt (
|
||||
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
|
||||
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
|
||||
IN UINTN SourceX,
|
||||
IN UINTN SourceY,
|
||||
IN UINTN DestinationX,
|
||||
IN UINTN DestinationY,
|
||||
IN UINTN Width,
|
||||
IN UINTN Height,
|
||||
IN UINTN Delta
|
||||
);
|
||||
|
||||
/**
|
||||
Install child handles if the Handle supports MBR format.
|
||||
|
||||
@param This Calling context.
|
||||
@param ParentHandle Parent Handle
|
||||
@param ParentPciIo Parent PciIo interface
|
||||
@param ParentLegacyBios Parent LegacyBios interface
|
||||
@param ParentDevicePath Parent Device Path
|
||||
@param RemainingDevicePath Remaining Device Path
|
||||
|
||||
@retval EFI_SUCCESS If a child handle was added
|
||||
@retval other A child handle was not added
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
FbGopChildHandleInstall (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ParentHandle,
|
||||
IN EFI_PCI_IO_PROTOCOL *ParentPciIo,
|
||||
IN VOID *ParentLegacyBios,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
Deregister an video child handle and free resources.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param Controller Video controller handle
|
||||
@param Handle Video child handle
|
||||
|
||||
@return EFI_STATUS
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
FbGopChildHandleUninstall (
|
||||
EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
EFI_HANDLE Controller,
|
||||
EFI_HANDLE Handle
|
||||
);
|
||||
|
||||
/**
|
||||
Release resource for biso video instance.
|
||||
|
||||
@param FbGopPrivate Video child device private data structure
|
||||
|
||||
**/
|
||||
VOID
|
||||
FbGopDeviceReleaseResource (
|
||||
FB_VIDEO_DEV *FbGopPrivate
|
||||
);
|
||||
|
||||
/**
|
||||
Check if all video child handles have been uninstalled.
|
||||
|
||||
@param Controller Video controller handle
|
||||
|
||||
@return TRUE Child handles exist.
|
||||
@return FALSE All video child handles have been uninstalled.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
HasChildHandle (
|
||||
IN EFI_HANDLE Controller
|
||||
);
|
||||
#endif
|
73
CorebootPayloadPkg/FbGop/FbGop.inf
Normal file
73
CorebootPayloadPkg/FbGop/FbGop.inf
Normal file
@ -0,0 +1,73 @@
|
||||
## @file
|
||||
# Video driver based on legacy bios.
|
||||
#
|
||||
# This driver by using Legacy Bios protocol service to support csm Video
|
||||
# and produce Graphics Output Protocol.
|
||||
#
|
||||
# Copyright (c) 2007 - 2014, 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.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = FbGop
|
||||
FILE_GUID = 0B04B2ED-861C-42cd-A22F-C3AAFACCB896
|
||||
MODULE_TYPE = UEFI_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
|
||||
ENTRY_POINT = FbGopEntryPoint
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
# DRIVER_BINDING = gBiosVideoDriverBinding
|
||||
# COMPONENT_NAME = gBiosVideoComponentName
|
||||
#
|
||||
|
||||
[Sources]
|
||||
FbGop.c
|
||||
FbGop.h
|
||||
ComponentName.c
|
||||
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
CorebootModulePkg/CorebootModulePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
MemoryAllocationLib
|
||||
DevicePathLib
|
||||
UefiLib
|
||||
UefiBootServicesTableLib
|
||||
UefiDriverEntryPoint
|
||||
BaseMemoryLib
|
||||
ReportStatusCodeLib
|
||||
DebugLib
|
||||
PcdLib
|
||||
HobLib
|
||||
|
||||
[Guids]
|
||||
gUefiFrameBufferInfoGuid
|
||||
|
||||
[Protocols]
|
||||
gEfiGraphicsOutputProtocolGuid # PROTOCOL BY_START
|
||||
gEfiPciIoProtocolGuid # PROTOCOL TO_START
|
||||
gEfiDevicePathProtocolGuid # PROTOCOL TO_START
|
||||
gEfiEdidDiscoveredProtocolGuid
|
||||
gEfiEdidActiveProtocolGuid
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution
|
276
CorebootPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c
Normal file
276
CorebootPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.c
Normal file
@ -0,0 +1,276 @@
|
||||
/** @file
|
||||
ACPI Timer implements one instance of Timer Library.
|
||||
|
||||
Copyright (c) 2014, 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.
|
||||
|
||||
**/
|
||||
|
||||
#include <PiPei.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
|
||||
#include <Guid/AcpiBoardInfoGuid.h>
|
||||
#include <IndustryStandard/Acpi.h>
|
||||
|
||||
#define ACPI_TIMER_COUNT_SIZE BIT24
|
||||
|
||||
UINTN mPmTimerReg = 0;
|
||||
|
||||
/**
|
||||
The constructor function enables ACPI IO space.
|
||||
|
||||
If ACPI I/O space not enabled, this function will enable it.
|
||||
It will always return RETURN_SUCCESS.
|
||||
|
||||
@retval EFI_SUCCESS The constructor always returns RETURN_SUCCESS.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
AcpiTimerLibConstructor (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
ACPI_BOARD_INFO *pAcpiBoardInfo;
|
||||
|
||||
//
|
||||
// Find the acpi board information guid hob
|
||||
//
|
||||
GuidHob = GetFirstGuidHob (&gUefiAcpiBoardInfoGuid);
|
||||
ASSERT (GuidHob != NULL);
|
||||
|
||||
pAcpiBoardInfo = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob);
|
||||
|
||||
mPmTimerReg = (UINTN)pAcpiBoardInfo->PmTimerRegBase;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Internal function to read the current tick counter of ACPI.
|
||||
|
||||
Internal function to read the current tick counter of ACPI.
|
||||
|
||||
@return The tick counter read.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
InternalAcpiGetTimerTick (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
if (mPmTimerReg == 0)
|
||||
AcpiTimerLibConstructor ();
|
||||
|
||||
return IoRead32 (mPmTimerReg);
|
||||
}
|
||||
|
||||
/**
|
||||
Stalls the CPU for at least the given number of ticks.
|
||||
|
||||
Stalls the CPU for at least the given number of ticks. It's invoked by
|
||||
MicroSecondDelay() and NanoSecondDelay().
|
||||
|
||||
@param Delay A period of time to delay in ticks.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InternalAcpiDelay (
|
||||
IN UINT32 Delay
|
||||
)
|
||||
{
|
||||
UINT32 Ticks;
|
||||
UINT32 Times;
|
||||
|
||||
Times = Delay >> 22;
|
||||
Delay &= BIT22 - 1;
|
||||
do {
|
||||
//
|
||||
// The target timer count is calculated here
|
||||
//
|
||||
Ticks = InternalAcpiGetTimerTick () + Delay;
|
||||
Delay = BIT22;
|
||||
//
|
||||
// Wait until time out
|
||||
// Delay >= 2^23 could not be handled by this function
|
||||
// Timer wrap-arounds are handled correctly by this function
|
||||
//
|
||||
while (((Ticks - InternalAcpiGetTimerTick ()) & BIT23) == 0) {
|
||||
CpuPause ();
|
||||
}
|
||||
} while (Times-- > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
Stalls the CPU for at least the given number of microseconds.
|
||||
|
||||
Stalls the CPU for the number of microseconds specified by MicroSeconds.
|
||||
|
||||
@param MicroSeconds The minimum number of microseconds to delay.
|
||||
|
||||
@return MicroSeconds
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
MicroSecondDelay (
|
||||
IN UINTN MicroSeconds
|
||||
)
|
||||
{
|
||||
InternalAcpiDelay (
|
||||
(UINT32)DivU64x32 (
|
||||
MultU64x32 (
|
||||
MicroSeconds,
|
||||
ACPI_TIMER_FREQUENCY
|
||||
),
|
||||
1000000u
|
||||
)
|
||||
);
|
||||
return MicroSeconds;
|
||||
}
|
||||
|
||||
/**
|
||||
Stalls the CPU for at least the given number of nanoseconds.
|
||||
|
||||
Stalls the CPU for the number of nanoseconds specified by NanoSeconds.
|
||||
|
||||
@param NanoSeconds The minimum number of nanoseconds to delay.
|
||||
|
||||
@return NanoSeconds
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
NanoSecondDelay (
|
||||
IN UINTN NanoSeconds
|
||||
)
|
||||
{
|
||||
InternalAcpiDelay (
|
||||
(UINT32)DivU64x32 (
|
||||
MultU64x32 (
|
||||
NanoSeconds,
|
||||
ACPI_TIMER_FREQUENCY
|
||||
),
|
||||
1000000000u
|
||||
)
|
||||
);
|
||||
return NanoSeconds;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the current value of a 64-bit free running performance counter.
|
||||
|
||||
Retrieves the current value of a 64-bit free running performance counter. The
|
||||
counter can either count up by 1 or count down by 1. If the physical
|
||||
performance counter counts by a larger increment, then the counter values
|
||||
must be translated. The properties of the counter can be retrieved from
|
||||
GetPerformanceCounterProperties().
|
||||
|
||||
@return The current value of the free running performance counter.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
GetPerformanceCounter (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return (UINT64)InternalAcpiGetTimerTick ();
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the 64-bit frequency in Hz and the range of performance counter
|
||||
values.
|
||||
|
||||
If StartValue is not NULL, then the value that the performance counter starts
|
||||
with immediately after is it rolls over is returned in StartValue. If
|
||||
EndValue is not NULL, then the value that the performance counter end with
|
||||
immediately before it rolls over is returned in EndValue. The 64-bit
|
||||
frequency of the performance counter in Hz is always returned. If StartValue
|
||||
is less than EndValue, then the performance counter counts up. If StartValue
|
||||
is greater than EndValue, then the performance counter counts down. For
|
||||
example, a 64-bit free running counter that counts up would have a StartValue
|
||||
of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter
|
||||
that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0.
|
||||
|
||||
@param StartValue The value the performance counter starts with when it
|
||||
rolls over.
|
||||
@param EndValue The value that the performance counter ends with before
|
||||
it rolls over.
|
||||
|
||||
@return The frequency in Hz.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
GetPerformanceCounterProperties (
|
||||
OUT UINT64 *StartValue, OPTIONAL
|
||||
OUT UINT64 *EndValue OPTIONAL
|
||||
)
|
||||
{
|
||||
if (StartValue != NULL) {
|
||||
*StartValue = 0;
|
||||
}
|
||||
|
||||
if (EndValue != NULL) {
|
||||
*EndValue = ACPI_TIMER_COUNT_SIZE - 1;
|
||||
}
|
||||
|
||||
return ACPI_TIMER_FREQUENCY;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts elapsed ticks of performance counter to time in nanoseconds.
|
||||
|
||||
This function converts the elapsed ticks of running performance counter to
|
||||
time value in unit of nanoseconds.
|
||||
|
||||
@param Ticks The number of elapsed ticks of running performance counter.
|
||||
|
||||
@return The elapsed time in nanoseconds.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
GetTimeInNanoSecond (
|
||||
IN UINT64 Ticks
|
||||
)
|
||||
{
|
||||
UINT64 Frequency;
|
||||
UINT64 NanoSeconds;
|
||||
UINT64 Remainder;
|
||||
INTN Shift;
|
||||
|
||||
Frequency = GetPerformanceCounterProperties (NULL, NULL);
|
||||
|
||||
//
|
||||
// Ticks
|
||||
// Time = --------- x 1,000,000,000
|
||||
// Frequency
|
||||
//
|
||||
NanoSeconds = MultU64x32 (DivU64x64Remainder (Ticks, Frequency, &Remainder), 1000000000u);
|
||||
|
||||
//
|
||||
// Ensure (Remainder * 1,000,000,000) will not overflow 64-bit.
|
||||
// Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34,
|
||||
// i.e. highest bit set in Remainder should <= 33.
|
||||
//
|
||||
Shift = MAX (0, HighBitSet64 (Remainder) - 33);
|
||||
Remainder = RShiftU64 (Remainder, (UINTN) Shift);
|
||||
Frequency = RShiftU64 (Frequency, (UINTN) Shift);
|
||||
NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL);
|
||||
|
||||
return NanoSeconds;
|
||||
}
|
||||
|
46
CorebootPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf
Normal file
46
CorebootPayloadPkg/Library/AcpiTimerLib/AcpiTimerLib.inf
Normal file
@ -0,0 +1,46 @@
|
||||
## @file
|
||||
# ACPI Timer Library Instance.
|
||||
#
|
||||
# Copyright (c) 2014, 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.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = AcpiTimerLib
|
||||
FILE_GUID = A41BF616-EF77-4658-9992-D813071C34CF
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = TimerLib
|
||||
|
||||
CONSTRUCTOR = AcpiTimerLibConstructor
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
|
||||
[Sources]
|
||||
AcpiTimerLib.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
CorebootModulePkg/CorebootModulePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
IoLib
|
||||
HobLib
|
||||
DebugLib
|
||||
|
||||
[Guids]
|
||||
gUefiAcpiBoardInfoGuid
|
1016
CorebootPayloadPkg/Library/PlatformBdsLib/BdsPlatform.c
Normal file
1016
CorebootPayloadPkg/Library/PlatformBdsLib/BdsPlatform.c
Normal file
File diff suppressed because it is too large
Load Diff
162
CorebootPayloadPkg/Library/PlatformBdsLib/BdsPlatform.h
Normal file
162
CorebootPayloadPkg/Library/PlatformBdsLib/BdsPlatform.h
Normal file
@ -0,0 +1,162 @@
|
||||
/** @file
|
||||
Head file for BDS Platform specific code
|
||||
|
||||
Copyright (c) 2014, 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_SPECIFIC_BDS_PLATFORM_H_
|
||||
#define _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
|
||||
|
||||
#include <PiDxe.h>
|
||||
#include <IndustryStandard/Pci.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/GenericBdsLib.h>
|
||||
#include <Library/PlatformBdsLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
|
||||
#include <Protocol/PciIo.h>
|
||||
#include <Protocol/SerialIo.h>
|
||||
|
||||
#include <Guid/GlobalVariable.h>
|
||||
extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[];
|
||||
extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];
|
||||
extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[];
|
||||
extern EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges[];
|
||||
extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;
|
||||
extern UART_DEVICE_PATH gUartDeviceNode;
|
||||
extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;
|
||||
extern VENDOR_DEVICE_PATH gUartDeviceVenderNode;
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
#define VarConsoleInpDev L"ConInDev"
|
||||
#define VarConsoleInp L"ConIn"
|
||||
#define VarConsoleOutDev L"ConOutDev"
|
||||
#define VarConsoleOut L"ConOut"
|
||||
#define VarErrorOutDev L"ErrOutDev"
|
||||
#define VarErrorOut L"ErrOut"
|
||||
|
||||
#define PCI_DEVICE_PATH_NODE(Func, Dev) \
|
||||
{ \
|
||||
{ \
|
||||
HARDWARE_DEVICE_PATH, \
|
||||
HW_PCI_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (PCI_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
(Func), \
|
||||
(Dev) \
|
||||
}
|
||||
|
||||
#define PNPID_DEVICE_PATH_NODE(PnpId) \
|
||||
{ \
|
||||
{ \
|
||||
ACPI_DEVICE_PATH, \
|
||||
ACPI_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
|
||||
}, \
|
||||
}, \
|
||||
EISA_PNP_ID((PnpId)), \
|
||||
0 \
|
||||
}
|
||||
|
||||
#define gPciRootBridge \
|
||||
PNPID_DEVICE_PATH_NODE(0x0A03)
|
||||
#define gPnp16550ComPort \
|
||||
PNPID_DEVICE_PATH_NODE(0x0501)
|
||||
|
||||
#define gUartVender \
|
||||
{ \
|
||||
{ \
|
||||
HARDWARE_DEVICE_PATH, \
|
||||
HW_VENDOR_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
EFI_SERIAL_IO_PROTOCOL_GUID \
|
||||
}
|
||||
|
||||
#define gUart \
|
||||
{ \
|
||||
{ \
|
||||
MESSAGING_DEVICE_PATH, \
|
||||
MSG_UART_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (UART_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
0, \
|
||||
115200, \
|
||||
8, \
|
||||
1, \
|
||||
1 \
|
||||
}
|
||||
|
||||
#define gPcAnsiTerminal \
|
||||
{ \
|
||||
{ \
|
||||
MESSAGING_DEVICE_PATH, \
|
||||
MSG_VENDOR_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
DEVICE_PATH_MESSAGING_PC_ANSI \
|
||||
}
|
||||
|
||||
#define gEndEntire \
|
||||
{ \
|
||||
END_DEVICE_PATH_TYPE, \
|
||||
END_ENTIRE_DEVICE_PATH_SUBTYPE, \
|
||||
{ \
|
||||
END_DEVICE_PATH_LENGTH, \
|
||||
0 \
|
||||
} \
|
||||
}
|
||||
#define PCI_CLASS_SCC 0x07
|
||||
#define PCI_SUBCLASS_SERIAL 0x00
|
||||
#define PCI_IF_16550 0x02
|
||||
#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)
|
||||
|
||||
#define IS_PCI_ISA_PDECODE(_p) IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA_PDECODE, 0)
|
||||
|
||||
//
|
||||
// Platform Root Bridge
|
||||
//
|
||||
typedef struct {
|
||||
ACPI_HID_DEVICE_PATH PciRootBridge;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} PLATFORM_ROOT_BRIDGE_DEVICE_PATH;
|
||||
EFI_STATUS
|
||||
PlatformBdsNoConsoleAction (
|
||||
VOID
|
||||
);
|
||||
VOID
|
||||
PlatformBdsEnterFrontPage (
|
||||
IN UINT16 TimeoutDefault,
|
||||
IN BOOLEAN ConnectAllHappened
|
||||
);
|
||||
#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
|
50
CorebootPayloadPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
Normal file
50
CorebootPayloadPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
Normal file
@ -0,0 +1,50 @@
|
||||
## @file
|
||||
# Platform BDS customizations library.
|
||||
#
|
||||
# Copyright (c) 2014, 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.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = PlatformBdsLib
|
||||
FILE_GUID = CE70284F-9D7A-4c22-8769-E199387F40FC
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = PlatformBdsLib|DXE_DRIVER
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
|
||||
[Sources]
|
||||
BdsPlatform.c
|
||||
PlatformData.c
|
||||
BdsPlatform.h
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
||||
CorebootPayloadPkg/CorebootPayloadPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
MemoryAllocationLib
|
||||
UefiBootServicesTableLib
|
||||
BaseMemoryLib
|
||||
DebugLib
|
||||
PcdLib
|
||||
GenericBdsLib
|
||||
[Pcd]
|
||||
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut
|
||||
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile
|
62
CorebootPayloadPkg/Library/PlatformBdsLib/PlatformData.c
Normal file
62
CorebootPayloadPkg/Library/PlatformBdsLib/PlatformData.c
Normal file
@ -0,0 +1,62 @@
|
||||
/** @file
|
||||
Defined the platform specific device path which will be used by
|
||||
platform Bbd to perform the platform policy connect.
|
||||
|
||||
Copyright (c) 2014, 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.
|
||||
|
||||
**/
|
||||
|
||||
#include "BdsPlatform.h"
|
||||
|
||||
//
|
||||
// Predefined platform default time out value
|
||||
//
|
||||
UINT16 gPlatformBootTimeOutDefault = 5;
|
||||
|
||||
ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode = gPnp16550ComPort;
|
||||
UART_DEVICE_PATH gUartDeviceNode = gUart;
|
||||
VENDOR_DEVICE_PATH gTerminalTypeDeviceNode = gPcAnsiTerminal;
|
||||
VENDOR_DEVICE_PATH gUartDeviceVenderNode = gUartVender;
|
||||
//
|
||||
// Predefined platform root bridge
|
||||
//
|
||||
PLATFORM_ROOT_BRIDGE_DEVICE_PATH gPlatformRootBridge0 = {
|
||||
gPciRootBridge,
|
||||
gEndEntire
|
||||
};
|
||||
|
||||
EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges[] = {
|
||||
(EFI_DEVICE_PATH_PROTOCOL *) &gPlatformRootBridge0,
|
||||
NULL
|
||||
};
|
||||
|
||||
//
|
||||
// Platform specific keyboard device path
|
||||
//
|
||||
|
||||
///
|
||||
/// Predefined platform default console device path
|
||||
///
|
||||
BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = {
|
||||
{
|
||||
NULL,
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
///
|
||||
/// Predefined platform specific driver option
|
||||
///
|
||||
EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[] = { NULL };
|
||||
|
||||
///
|
||||
/// Predefined platform connect sequence
|
||||
///
|
||||
EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[] = { NULL };
|
136
CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c
Normal file
136
CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.c
Normal file
@ -0,0 +1,136 @@
|
||||
/** @file
|
||||
Reset System Library functions for coreboot
|
||||
|
||||
Copyright (c) 2014, 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.
|
||||
|
||||
**/
|
||||
|
||||
#include <PiDxe.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
|
||||
#include <Guid/AcpiBoardInfoGuid.h>
|
||||
|
||||
VOID
|
||||
AcpiPmControl (
|
||||
UINTN SuspendType
|
||||
)
|
||||
{
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
ACPI_BOARD_INFO *pAcpiBoardInfo;
|
||||
UINTN PmCtrlReg = 0;
|
||||
|
||||
ASSERT (SuspendType <= 7);
|
||||
//
|
||||
// Find the acpi board information guid hob
|
||||
//
|
||||
GuidHob = GetFirstGuidHob (&gUefiAcpiBoardInfoGuid);
|
||||
ASSERT (GuidHob != NULL);
|
||||
pAcpiBoardInfo = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob);
|
||||
|
||||
PmCtrlReg = (UINTN)pAcpiBoardInfo->PmCtrlRegBase;
|
||||
IoAndThenOr16 (PmCtrlReg, (UINT16) ~0x3c00, (UINT16) (SuspendType << 10));
|
||||
IoOr16 (PmCtrlReg, BIT13);
|
||||
CpuDeadLoop ();
|
||||
}
|
||||
|
||||
/**
|
||||
Calling this function causes a system-wide reset. This sets
|
||||
all circuitry within the system to its initial state. This type of reset
|
||||
is asynchronous to system operation and operates without regard to
|
||||
cycle boundaries.
|
||||
|
||||
System reset should not return, if it returns, it means the system does
|
||||
not support cold reset.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
ResetCold (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
ACPI_BOARD_INFO *pAcpiBoardInfo;
|
||||
|
||||
//
|
||||
// Find the acpi board information guid hob
|
||||
//
|
||||
GuidHob = GetFirstGuidHob (&gUefiAcpiBoardInfoGuid);
|
||||
ASSERT (GuidHob != NULL);
|
||||
pAcpiBoardInfo = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob);
|
||||
|
||||
IoWrite8 ((UINTN)pAcpiBoardInfo->ResetRegAddress, pAcpiBoardInfo->ResetValue);
|
||||
CpuDeadLoop ();
|
||||
}
|
||||
|
||||
/**
|
||||
Calling this function causes a system-wide initialization. The processors
|
||||
are set to their initial state, and pending cycles are not corrupted.
|
||||
|
||||
System reset should not return, if it returns, it means the system does
|
||||
not support warm reset.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
ResetWarm (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
ACPI_BOARD_INFO *pAcpiBoardInfo;
|
||||
|
||||
//
|
||||
// Find the acpi board information guid hob
|
||||
//
|
||||
GuidHob = GetFirstGuidHob (&gUefiAcpiBoardInfoGuid);
|
||||
ASSERT (GuidHob != NULL);
|
||||
pAcpiBoardInfo = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob);
|
||||
|
||||
IoWrite8 ((UINTN)pAcpiBoardInfo->ResetRegAddress, pAcpiBoardInfo->ResetValue);
|
||||
CpuDeadLoop ();
|
||||
}
|
||||
|
||||
/**
|
||||
Calling this function causes the system to enter a power state equivalent
|
||||
to the ACPI G2/S5 or G3 states.
|
||||
|
||||
System shutdown should not return, if it returns, it means the system does
|
||||
not support shut down reset.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
ResetShutdown (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
AcpiPmControl (7);
|
||||
ASSERT (FALSE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Calling this function causes the system to enter a power state for capsule
|
||||
update.
|
||||
|
||||
Reset update should not return, if it returns, it means the system does
|
||||
not support capsule update.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
EnterS3WithImmediateWake (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
AcpiPmControl (5);
|
||||
ASSERT (FALSE);
|
||||
}
|
44
CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf
Normal file
44
CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf
Normal file
@ -0,0 +1,44 @@
|
||||
## @file
|
||||
# Library instance for ResetSystem library class for coreboot
|
||||
#
|
||||
# Copyright (c) 2014, 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.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = ResetSystemLib
|
||||
FILE_GUID = C5CD4EEE-527F-47df-9C92-B41414AF7479
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = ResetSystemLib
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF
|
||||
#
|
||||
|
||||
[Sources]
|
||||
ResetSystemLib.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
CorebootModulePkg/CorebootModulePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
DebugLib
|
||||
IoLib
|
||||
HobLib
|
||||
|
||||
[Guids]
|
||||
gUefiAcpiBoardInfoGuid
|
||||
|
316
CorebootPayloadPkg/Library/SerialPortLib/SerialPortLib.c
Normal file
316
CorebootPayloadPkg/Library/SerialPortLib/SerialPortLib.c
Normal file
@ -0,0 +1,316 @@
|
||||
/** @file
|
||||
SerialPortLib instance for UART device upon coreboot
|
||||
|
||||
Copyright (c) 2014, 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.
|
||||
|
||||
**/
|
||||
|
||||
#include <Uefi/UefiBaseType.h>
|
||||
#include <Library/SerialPortLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/CbParseLib.h>
|
||||
|
||||
//
|
||||
// 16550 UART register offsets and bitfields
|
||||
//
|
||||
#define R_UART_RXBUF 0
|
||||
#define R_UART_TXBUF 0
|
||||
#define R_UART_BAUD_LOW 0
|
||||
#define R_UART_BAUD_HIGH 1
|
||||
#define R_UART_FCR 2
|
||||
#define B_UART_FCR_FIFOE BIT0
|
||||
#define B_UART_FCR_FIFO64 BIT5
|
||||
#define R_UART_LCR 3
|
||||
#define B_UART_LCR_DLAB BIT7
|
||||
#define R_UART_MCR 4
|
||||
#define B_UART_MCR_RTS BIT1
|
||||
#define R_UART_LSR 5
|
||||
#define B_UART_LSR_RXRDY BIT0
|
||||
#define B_UART_LSR_TXRDY BIT5
|
||||
#define B_UART_LSR_TEMT BIT6
|
||||
#define R_UART_MSR 6
|
||||
#define B_UART_MSR_CTS BIT4
|
||||
#define B_UART_MSR_DSR BIT5
|
||||
|
||||
UINT32 mSerialRegBase = 0;
|
||||
UINT32 mSerialRegAccessType = 0;
|
||||
|
||||
/**
|
||||
Read an 8-bit 16550 register. If PcdSerialUseMmio is TRUE, then the value is read from
|
||||
MMIO space. If PcdSerialUseMmio is FALSE, then the value is read from I/O space. The
|
||||
parameter Offset is added to the base address of the 16550 registers that is specified
|
||||
by PcdSerialRegisterBase.
|
||||
|
||||
@param Offset The offset of the 16550 register to read.
|
||||
|
||||
@return The value read from the 16550 register.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
SerialPortReadRegister (
|
||||
UINTN Offset
|
||||
)
|
||||
{
|
||||
if (mSerialRegAccessType == 2) { //MMIO
|
||||
return MmioRead8 (mSerialRegBase + Offset);
|
||||
} else { //IO
|
||||
return IoRead8 ((UINT16)mSerialRegBase + Offset);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Write an 8-bit 16550 register. If PcdSerialUseMmio is TRUE, then the value is written to
|
||||
MMIO space. If PcdSerialUseMmio is FALSE, then the value is written to I/O space. The
|
||||
parameter Offset is added to the base address of the 16550 registers that is specified
|
||||
by PcdSerialRegisterBase.
|
||||
|
||||
@param Offset The offset of the 16550 register to write.
|
||||
@param Value The value to write to the 16550 register specified by Offset.
|
||||
|
||||
@return The value written to the 16550 register.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
SerialPortWriteRegister (
|
||||
UINTN Offset,
|
||||
UINT8 Value
|
||||
)
|
||||
{
|
||||
if (mSerialRegAccessType == 2) { //MMIO
|
||||
return MmioWrite8 (mSerialRegBase + Offset, Value);
|
||||
} else {// IO
|
||||
return IoWrite8 ((UINT16)mSerialRegBase + Offset, Value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize the serial device hardware.
|
||||
|
||||
If no initialization is required, then return RETURN_SUCCESS.
|
||||
If the serial device was successfully initialized, then return RETURN_SUCCESS.
|
||||
If the serial device could not be initialized, then return RETURN_DEVICE_ERROR.
|
||||
|
||||
@retval RETURN_SUCCESS The serial device was initialized.
|
||||
@retval RETURN_DEVICE_ERROR The serial device could not be initialized.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
SerialPortInitialize (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
RETURN_STATUS Status;
|
||||
UINTN Divisor;
|
||||
BOOLEAN Initialized;
|
||||
|
||||
Status = CbParseSerialInfo (&mSerialRegBase, &mSerialRegAccessType, NULL);
|
||||
if (RETURN_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// See if the serial port is already initialized
|
||||
//
|
||||
Initialized = TRUE;
|
||||
if ((SerialPortReadRegister (R_UART_FCR) & (B_UART_FCR_FIFOE | B_UART_FCR_FIFO64)) !=
|
||||
(PcdGet8 (PcdSerialFifoControl) & (B_UART_FCR_FIFOE | B_UART_FCR_FIFO64)) ) {
|
||||
Initialized = FALSE;
|
||||
}
|
||||
|
||||
if ((SerialPortReadRegister (R_UART_LCR) & 0x3F) != (PcdGet8 (PcdSerialLineControl) & 0x3F)) {
|
||||
Initialized = FALSE;
|
||||
}
|
||||
SerialPortWriteRegister (R_UART_LCR, (UINT8)(SerialPortReadRegister (R_UART_LCR) | B_UART_LCR_DLAB));
|
||||
Divisor = SerialPortReadRegister (R_UART_BAUD_HIGH) << 8;
|
||||
Divisor |= SerialPortReadRegister (R_UART_BAUD_LOW);
|
||||
SerialPortWriteRegister (R_UART_LCR, (UINT8)(SerialPortReadRegister (R_UART_LCR) & ~B_UART_LCR_DLAB));
|
||||
if (Divisor != 115200 / PcdGet32 (PcdSerialBaudRate)) {
|
||||
Initialized = FALSE;
|
||||
}
|
||||
if (Initialized) {
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// Configure baud rate
|
||||
//
|
||||
Divisor = 115200 / PcdGet32 (PcdSerialBaudRate);
|
||||
SerialPortWriteRegister (R_UART_LCR, B_UART_LCR_DLAB);
|
||||
SerialPortWriteRegister (R_UART_BAUD_HIGH, (UINT8) (Divisor >> 8));
|
||||
SerialPortWriteRegister (R_UART_BAUD_LOW, (UINT8) (Divisor & 0xff));
|
||||
|
||||
//
|
||||
// Clear DLAB and configure Data Bits, Parity, and Stop Bits.
|
||||
// Strip reserved bits from PcdSerialLineControl
|
||||
//
|
||||
SerialPortWriteRegister (R_UART_LCR, (UINT8)(PcdGet8 (PcdSerialLineControl) & 0x3F));
|
||||
|
||||
//
|
||||
// Enable and reset FIFOs
|
||||
// Strip reserved bits from PcdSerialFifoControl
|
||||
//
|
||||
SerialPortWriteRegister (R_UART_FCR, (UINT8)(PcdGet8 (PcdSerialFifoControl) & 0x27));
|
||||
|
||||
//
|
||||
// Put Modem Control Register(MCR) into its reset state of 0x00.
|
||||
//
|
||||
SerialPortWriteRegister (R_UART_MCR, 0x00);
|
||||
|
||||
return RETURN_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Write data from buffer to serial device.
|
||||
|
||||
Writes NumberOfBytes data bytes from Buffer to the serial device.
|
||||
The number of bytes actually written to the serial device is returned.
|
||||
If the return value is less than NumberOfBytes, then the write operation failed.
|
||||
|
||||
If Buffer is NULL, then ASSERT().
|
||||
|
||||
If NumberOfBytes is zero, then return 0.
|
||||
|
||||
@param Buffer Pointer to the data buffer to be written.
|
||||
@param NumberOfBytes Number of bytes to written to the serial device.
|
||||
|
||||
@retval 0 NumberOfBytes is 0.
|
||||
@retval >0 The number of bytes written to the serial device.
|
||||
If this value is less than NumberOfBytes, then the read operation failed.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
SerialPortWrite (
|
||||
IN UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
)
|
||||
{
|
||||
UINTN Result;
|
||||
UINTN Index;
|
||||
UINTN FifoSize;
|
||||
|
||||
if (Buffer == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (NumberOfBytes == 0) {
|
||||
//
|
||||
// Flush the hardware
|
||||
//
|
||||
|
||||
//
|
||||
// Wait for both the transmit FIFO and shift register empty.
|
||||
//
|
||||
while ((SerialPortReadRegister (R_UART_LSR) & B_UART_LSR_TEMT) == 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Compute the maximum size of the Tx FIFO
|
||||
//
|
||||
FifoSize = 1;
|
||||
if ((PcdGet8 (PcdSerialFifoControl) & B_UART_FCR_FIFOE) != 0) {
|
||||
if ((PcdGet8 (PcdSerialFifoControl) & B_UART_FCR_FIFO64) == 0) {
|
||||
FifoSize = 16;
|
||||
} else {
|
||||
FifoSize = 64;
|
||||
}
|
||||
}
|
||||
|
||||
Result = NumberOfBytes;
|
||||
while (NumberOfBytes != 0) {
|
||||
//
|
||||
// Wait for the serial port to be ready, to make sure both the transmit FIFO
|
||||
// and shift register empty.
|
||||
//
|
||||
while ((SerialPortReadRegister (R_UART_LSR) & B_UART_LSR_TEMT) == 0);
|
||||
|
||||
//
|
||||
// Fill then entire Tx FIFO
|
||||
//
|
||||
for (Index = 0; Index < FifoSize && NumberOfBytes != 0; Index++, NumberOfBytes--, Buffer++) {
|
||||
|
||||
//
|
||||
// Write byte to the transmit buffer.
|
||||
//
|
||||
SerialPortWriteRegister (R_UART_TXBUF, *Buffer);
|
||||
}
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
/**
|
||||
Reads data from a serial device into a buffer.
|
||||
|
||||
@param Buffer Pointer to the data buffer to store the data read from the serial device.
|
||||
@param NumberOfBytes Number of bytes to read from the serial device.
|
||||
|
||||
@retval 0 NumberOfBytes is 0.
|
||||
@retval >0 The number of bytes read from the serial device.
|
||||
If this value is less than NumberOfBytes, then the read operation failed.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
SerialPortRead (
|
||||
OUT UINT8 *Buffer,
|
||||
IN UINTN NumberOfBytes
|
||||
)
|
||||
{
|
||||
UINTN Result;
|
||||
|
||||
if (NULL == Buffer) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (Result = 0; NumberOfBytes-- != 0; Result++, Buffer++) {
|
||||
//
|
||||
// Wait for the serial port to have some data.
|
||||
//
|
||||
while ((SerialPortReadRegister (R_UART_LSR) & B_UART_LSR_RXRDY) == 0);
|
||||
|
||||
//
|
||||
// Read byte from the receive buffer.
|
||||
//
|
||||
*Buffer = SerialPortReadRegister (R_UART_RXBUF);
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
/**
|
||||
Polls a serial device to see if there is any data waiting to be read.
|
||||
|
||||
Polls aserial device to see if there is any data waiting to be read.
|
||||
If there is data waiting to be read from the serial device, then TRUE is returned.
|
||||
If there is no data waiting to be read from the serial device, then FALSE is returned.
|
||||
|
||||
@retval TRUE Data is waiting to be read from the serial device.
|
||||
@retval FALSE There is no data waiting to be read from the serial device.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
SerialPortPoll (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
//
|
||||
// Read the serial port status
|
||||
//
|
||||
if ((SerialPortReadRegister (R_UART_LSR) & B_UART_LSR_RXRDY) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
42
CorebootPayloadPkg/Library/SerialPortLib/SerialPortLib.inf
Normal file
42
CorebootPayloadPkg/Library/SerialPortLib/SerialPortLib.inf
Normal file
@ -0,0 +1,42 @@
|
||||
## @file
|
||||
# SerialPortLib instance for UART device upon coreboot
|
||||
#
|
||||
# Copyright (c) 2014, 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.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = SerialPortLib
|
||||
FILE_GUID = 40A2CBC6-CFB8-447b-A90E-198E88FD345E
|
||||
MODULE_TYPE = BASE
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = SerialPortLib
|
||||
|
||||
CONSTRUCTOR = SerialPortInitialize
|
||||
|
||||
[Sources]
|
||||
SerialPortLib.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
CorebootModulePkg/CorebootModulePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
PcdLib
|
||||
IoLib
|
||||
CbParseLib
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialLineControl
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdSerialFifoControl
|
55
CorebootPayloadPkg/SerialDxe/SerialDxe.inf
Normal file
55
CorebootPayloadPkg/SerialDxe/SerialDxe.inf
Normal file
@ -0,0 +1,55 @@
|
||||
#/** @file
|
||||
#
|
||||
# Convert SerialLib into SerialIo protocol
|
||||
#
|
||||
# Copyright (c) 2008 - 2014, 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.
|
||||
#
|
||||
#**/
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = SerialDxe
|
||||
FILE_GUID = D3987D4B-971A-435F-8CAF-4967EB627241
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
|
||||
ENTRY_POINT = SerialDxeInitialize
|
||||
|
||||
[Sources.common]
|
||||
SerialIo.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
ReportStatusCodeLib
|
||||
MemoryAllocationLib
|
||||
UefiLib
|
||||
UefiBootServicesTableLib
|
||||
BaseMemoryLib
|
||||
DebugLib
|
||||
UefiDriverEntryPoint
|
||||
SerialPortLib
|
||||
|
||||
|
||||
[Protocols]
|
||||
gEfiSerialIoProtocolGuid
|
||||
gEfiDevicePathProtocolGuid
|
||||
|
||||
[FixedPcd]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
|
||||
|
||||
[Depex]
|
||||
TRUE
|
392
CorebootPayloadPkg/SerialDxe/SerialIo.c
Normal file
392
CorebootPayloadPkg/SerialDxe/SerialIo.c
Normal file
@ -0,0 +1,392 @@
|
||||
/** @file
|
||||
Serial IO Abstraction for GDB stub. This allows an EFI consoles that shows up on the system
|
||||
running GDB. One console for error information and another console for user input/output.
|
||||
|
||||
Basic packet format is $packet-data#checksum. So every command has 4 bytes of overhead: $,
|
||||
#, 0, 0. The 0 and 0 are the ascii characters for the checksum.
|
||||
|
||||
|
||||
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||
Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
|
||||
Copyright (c) 2014, 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.
|
||||
|
||||
**/
|
||||
|
||||
#include <PiDxe.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/SerialPortLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
|
||||
#include <Protocol/SerialIo.h>
|
||||
|
||||
typedef struct {
|
||||
VENDOR_DEVICE_PATH Guid;
|
||||
UART_DEVICE_PATH Uart;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} SIMPLE_TEXT_OUT_DEVICE_PATH;
|
||||
|
||||
SIMPLE_TEXT_OUT_DEVICE_PATH mDevicePath = {
|
||||
{
|
||||
{ HARDWARE_DEVICE_PATH, HW_VENDOR_DP, sizeof (VENDOR_DEVICE_PATH), 0},
|
||||
EFI_SERIAL_IO_PROTOCOL_GUID // Use the drivers GUID
|
||||
},
|
||||
{
|
||||
{ MESSAGING_DEVICE_PATH, MSG_UART_DP, sizeof (UART_DEVICE_PATH), 0},
|
||||
0, // Reserved
|
||||
FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate
|
||||
FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits
|
||||
FixedPcdGet8 (PcdUartDefaultParity), // Parity (N)
|
||||
FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits
|
||||
},
|
||||
{ END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, sizeof (EFI_DEVICE_PATH_PROTOCOL), 0}
|
||||
};
|
||||
|
||||
EFI_HANDLE gHandle = NULL;
|
||||
|
||||
/**
|
||||
Reset the serial device.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
|
||||
@retval EFI_SUCCESS The device was reset.
|
||||
@retval EFI_DEVICE_ERROR The serial device could not be reset.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialReset (
|
||||
IN EFI_SERIAL_IO_PROTOCOL *This
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_TPL Tpl;
|
||||
|
||||
Status = SerialPortInitialize ();
|
||||
if (EFI_ERROR(Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Set the Serial I/O mode and update the device path
|
||||
//
|
||||
|
||||
Tpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
|
||||
//
|
||||
// Set the Serial I/O mode
|
||||
//
|
||||
This->Mode->ReceiveFifoDepth = 0;
|
||||
This->Mode->Timeout = 1000000;
|
||||
This->Mode->BaudRate = PcdGet64 (PcdUartDefaultBaudRate);
|
||||
This->Mode->DataBits = (UINT32)PcdGet8 (PcdUartDefaultDataBits);
|
||||
This->Mode->Parity = (UINT32)PcdGet8 (PcdUartDefaultParity);
|
||||
This->Mode->StopBits = (UINT32)PcdGet8 (PcdUartDefaultStopBits);
|
||||
|
||||
//
|
||||
// Check if the device path has actually changed
|
||||
//
|
||||
if (mDevicePath.Uart.BaudRate == This->Mode->BaudRate &&
|
||||
mDevicePath.Uart.DataBits == (UINT8)This->Mode->DataBits &&
|
||||
mDevicePath.Uart.Parity == (UINT8)This->Mode->Parity &&
|
||||
mDevicePath.Uart.StopBits == (UINT8)This->Mode->StopBits
|
||||
) {
|
||||
gBS->RestoreTPL (Tpl);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// Update the device path
|
||||
//
|
||||
mDevicePath.Uart.BaudRate = This->Mode->BaudRate;
|
||||
mDevicePath.Uart.DataBits = (UINT8)This->Mode->DataBits;
|
||||
mDevicePath.Uart.Parity = (UINT8)This->Mode->Parity;
|
||||
mDevicePath.Uart.StopBits = (UINT8)This->Mode->StopBits;
|
||||
|
||||
Status = gBS->ReinstallProtocolInterface (
|
||||
gHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
&mDevicePath,
|
||||
&mDevicePath
|
||||
);
|
||||
|
||||
gBS->RestoreTPL (Tpl);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Sets the baud rate, receive FIFO depth, transmit/receive time out, parity,
|
||||
data buts, and stop bits on a serial device.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param BaudRate The requested baud rate. A BaudRate value of 0 will use the the
|
||||
device's default interface speed.
|
||||
@param ReceiveFifoDepth The requested depth of the FIFO on the receive side of the
|
||||
serial interface. A ReceiveFifoDepth value of 0 will use
|
||||
the device's default FIFO depth.
|
||||
@param Timeout The requested time out for a single character in microseconds.
|
||||
This timeout applies to both the transmit and receive side of the
|
||||
interface. A Timeout value of 0 will use the device's default time
|
||||
out value.
|
||||
@param Parity The type of parity to use on this serial device. A Parity value of
|
||||
DefaultParity will use the device's default parity value.
|
||||
@param DataBits The number of data bits to use on the serial device. A DataBits
|
||||
value of 0 will use the device's default data bit setting.
|
||||
@param StopBits The number of stop bits to use on this serial device. A StopBits
|
||||
value of DefaultStopBits will use the device's default number of
|
||||
stop bits.
|
||||
|
||||
@retval EFI_SUCCESS The device was reset.
|
||||
@retval EFI_DEVICE_ERROR The serial device could not be reset.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialSetAttributes (
|
||||
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||
IN UINT64 BaudRate,
|
||||
IN UINT32 ReceiveFifoDepth,
|
||||
IN UINT32 Timeout,
|
||||
IN EFI_PARITY_TYPE Parity,
|
||||
IN UINT8 DataBits,
|
||||
IN EFI_STOP_BITS_TYPE StopBits
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_TPL Tpl;
|
||||
|
||||
//
|
||||
// Set the Serial I/O mode and update the device path
|
||||
//
|
||||
|
||||
Tpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
|
||||
//
|
||||
// Set the Serial I/O mode
|
||||
//
|
||||
This->Mode->BaudRate = BaudRate;
|
||||
This->Mode->ReceiveFifoDepth = ReceiveFifoDepth;
|
||||
This->Mode->Timeout = Timeout;
|
||||
This->Mode->Parity = (UINT32)Parity;
|
||||
This->Mode->DataBits = (UINT32)DataBits;
|
||||
This->Mode->StopBits = (UINT32)StopBits;
|
||||
|
||||
//
|
||||
// Check if the device path has actually changed
|
||||
//
|
||||
if (mDevicePath.Uart.BaudRate == BaudRate &&
|
||||
mDevicePath.Uart.Parity == (UINT8)Parity &&
|
||||
mDevicePath.Uart.DataBits == DataBits &&
|
||||
mDevicePath.Uart.StopBits == (UINT8)StopBits
|
||||
) {
|
||||
gBS->RestoreTPL (Tpl);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// Update the device path
|
||||
//
|
||||
mDevicePath.Uart.BaudRate = BaudRate;
|
||||
mDevicePath.Uart.DataBits = DataBits;
|
||||
mDevicePath.Uart.Parity = (UINT8) Parity;
|
||||
mDevicePath.Uart.StopBits = (UINT8) StopBits;
|
||||
|
||||
Status = gBS->ReinstallProtocolInterface (
|
||||
gHandle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
&mDevicePath,
|
||||
&mDevicePath
|
||||
);
|
||||
|
||||
gBS->RestoreTPL (Tpl);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Set the control bits on a serial device
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param Control Set the bits of Control that are settable.
|
||||
|
||||
@retval EFI_SUCCESS The new control bits were set on the serial device.
|
||||
@retval EFI_UNSUPPORTED The serial device does not support this operation.
|
||||
@retval EFI_DEVICE_ERROR The serial device is not functioning correctly.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialSetControl (
|
||||
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||
IN UINT32 Control
|
||||
)
|
||||
{
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the status of the control bits on a serial device
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param Control A pointer to return the current Control signals from the serial device.
|
||||
|
||||
@retval EFI_SUCCESS The control bits were read from the serial device.
|
||||
@retval EFI_DEVICE_ERROR The serial device is not functioning correctly.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialGetControl (
|
||||
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||
OUT UINT32 *Control
|
||||
)
|
||||
{
|
||||
if (SerialPortPoll ()) {
|
||||
// If a character is pending don't set EFI_SERIAL_INPUT_BUFFER_EMPTY
|
||||
*Control = EFI_SERIAL_OUTPUT_BUFFER_EMPTY;
|
||||
} else {
|
||||
*Control = EFI_SERIAL_INPUT_BUFFER_EMPTY | EFI_SERIAL_OUTPUT_BUFFER_EMPTY;
|
||||
}
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Writes data to a serial device.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param BufferSize On input, the size of the Buffer. On output, the amount of
|
||||
data actually written.
|
||||
@param Buffer The buffer of data to write
|
||||
|
||||
@retval EFI_SUCCESS The data was written.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_TIMEOUT The data write was stopped due to a timeout.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialWrite (
|
||||
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||
IN OUT UINTN *BufferSize,
|
||||
IN VOID *Buffer
|
||||
)
|
||||
{
|
||||
UINTN Count;
|
||||
|
||||
Count = SerialPortWrite (Buffer, *BufferSize);
|
||||
|
||||
if (Count != *BufferSize) {
|
||||
*BufferSize = Count;
|
||||
return EFI_TIMEOUT;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Reads data from a serial device.
|
||||
|
||||
@param This Protocol instance pointer.
|
||||
@param BufferSize On input, the size of the Buffer. On output, the amount of
|
||||
data returned in Buffer.
|
||||
@param Buffer The buffer to return the data into.
|
||||
|
||||
@retval EFI_SUCCESS The data was read.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error.
|
||||
@retval EFI_TIMEOUT The data write was stopped due to a timeout.
|
||||
|
||||
**/
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialRead (
|
||||
IN EFI_SERIAL_IO_PROTOCOL *This,
|
||||
IN OUT UINTN *BufferSize,
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
{
|
||||
UINTN Count = 0;
|
||||
|
||||
if (SerialPortPoll()) {
|
||||
Count = SerialPortRead (Buffer, *BufferSize);
|
||||
}
|
||||
|
||||
if (Count != *BufferSize) {
|
||||
*BufferSize = Count;
|
||||
return EFI_TIMEOUT;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
// Template used to initialize the GDB Serial IO protocols
|
||||
//
|
||||
EFI_SERIAL_IO_MODE gSerialIoMode = {
|
||||
0, // ControlMask
|
||||
0, // Timeout
|
||||
FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate
|
||||
1, // ReceiveFifoDepth
|
||||
FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits
|
||||
FixedPcdGet8 (PcdUartDefaultParity), // Parity
|
||||
FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits
|
||||
};
|
||||
|
||||
|
||||
EFI_SERIAL_IO_PROTOCOL gSerialIoTemplate = {
|
||||
SERIAL_IO_INTERFACE_REVISION,
|
||||
SerialReset,
|
||||
SerialSetAttributes,
|
||||
SerialSetControl,
|
||||
SerialGetControl,
|
||||
SerialWrite,
|
||||
SerialRead,
|
||||
&gSerialIoMode
|
||||
};
|
||||
|
||||
/**
|
||||
Initialize the state information for the Serial Io Protocol
|
||||
|
||||
@param ImageHandle of the loaded driver
|
||||
@param SystemTable Pointer to the System Table
|
||||
|
||||
@retval EFI_SUCCESS Protocol registered
|
||||
@retval EFI_OUT_OF_RESOURCES Cannot allocate protocol data structure
|
||||
@retval EFI_DEVICE_ERROR Hardware problems
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SerialDxeInitialize (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
// Make a new handle with Serial IO protocol and its device path on it.
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&gHandle,
|
||||
&gEfiSerialIoProtocolGuid, &gSerialIoTemplate,
|
||||
&gEfiDevicePathProtocolGuid, &mDevicePath,
|
||||
NULL
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user