Skip to content
This repository has been archived by the owner on Feb 4, 2025. It is now read-only.

Commit

Permalink
WhitleyOpenBoardPkg/WilsonCityRvp: Generate AML offset table
Browse files Browse the repository at this point in the history
Add PreBuild step to generate the AML offset table for the
ACPI tables.

Cc: Nate DeSimone <[email protected]>
Cc: Chasel Chiu <[email protected]>
Signed-off-by: Isaac Oram <[email protected]>
Reviewed-by: Nate DeSimone <[email protected]>
  • Loading branch information
iworam committed Feb 9, 2022
1 parent 8f2d448 commit 16ea1b3
Show file tree
Hide file tree
Showing 5 changed files with 147 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Platform/Intel/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
WhitleyOpenBoardPkg/Uba/UbaMain/StaticSkuDataDxe/AmlOffsetTable.c
__init__.py
41 changes: 41 additions & 0 deletions Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## @file
# Build file for generating AML offset table
#
# @copyright
# Copyright (C) 2021 Intel Corporation.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
##

[Defines]
PLATFORM_NAME = $(RP_PKG)
PLATFORM_GUID = D7EAF54D-C9B9-4075-89F0-71943DBCFA61
PLATFORM_VERSION = 0.1
DSC_SPECIFICATION = 0x00010005
OUTPUT_DIRECTORY = Build/$(RP_PKG)
SUPPORTED_ARCHITECTURES = IA32|X64
BUILD_TARGETS = DEBUG|RELEASE
PLATFORM_SI_PACKAGE = ClientOneSiliconPkg
DEFINE PLATFORM_SI_BIN_PACKAGE = WhitleySiliconBinPkg
PEI_ARCH = IA32
DXE_ARCH = X64

!if $(CPUTARGET) == "CPX"
DEFINE FSP_BIN_PKG = CedarIslandFspBinPkg
DEFINE IIO_INSTANCE = Skx
!elseif $(CPUTARGET) == "ICX"
DEFINE FSP_BIN_PKG = WhitleyFspBinPkg
DEFINE IIO_INSTANCE = Icx
!else
DEFINE IIO_INSTANCE = UnknownCpu
!endif

#
# Platform On/Off features are defined here
#
!include $(RP_PKG)/PlatformPkgConfig.dsc

[Components.X64]
$(RP_PKG)/WilsonCityRvp/AmlOffsets/AmlOffsets.inf

!include $(RP_PKG)/Include/Dsc/BuildOptions.dsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## @file
# Generate AML offset table EPRPPlatform10nm.offset.h via edk2 build
#
# @copyright
# Copyright (C) 2022 Intel Corporation.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
##

[Defines]
INF_VERSION = 0x00010005
BASE_NAME = AmlOffsets
FILE_GUID = d7641589-753a-44c5-91c2-bd09686205c6
MODULE_TYPE = USER_DEFINED
VERSION_STRING = 1.0

[Sources]
WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Dsdt/EPRPPlatform10nm.asl

[Packages]
MdePkg/MdePkg.dec
WhitleySiliconPkg/SiliconPkg.dec

[BuildOptions]
# add -vr and -so to generate offset.h
*_*_*_ASL_FLAGS = -oi -vr -so
63 changes: 63 additions & 0 deletions Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def pre_build_ex(config, functions):
:returns: nothing
"""
print("pre_build_ex")

config["BUILD_DIR_PATH"] = os.path.join(config["WORKSPACE"],
'Build',
config["PLATFORM_BOARD_PACKAGE"],
Expand Down Expand Up @@ -53,6 +54,68 @@ def pre_build_ex(config, functions):

if config.get("API_MODE_FSP_WRAPPER_BUILD", "FALSE") == "TRUE":
raise ValueError("FSP API Mode is currently unsupported on Ice Lake Xeon Scalable")

# Build the ACPI AML offset table *.offset.h
print("Info: re-generating PlatformOffset header files")

execute_script = functions.get("execute_script")

command = ["build", "-D", "MAX_SOCKET=" + config["MAX_SOCKET"]]

if config["EXT_BUILD_FLAGS"] and config["EXT_BUILD_FLAGS"] != "":
ext_build_flags = config["EXT_BUILD_FLAGS"].split(" ")
ext_build_flags = [x.strip() for x in ext_build_flags]
ext_build_flags = [x for x in ext_build_flags if x != ""]
command.extend(ext_build_flags)

aml_offsets_split = os.path.split(os.path.normpath(config["AML_OFFSETS_PATH"]))
command.append("-p")
command.append(os.path.normpath(config["AML_OFFSETS_PATH"]) + '.dsc')
command.append("-m")
command.append(os.path.join(aml_offsets_split[0], aml_offsets_split[1], aml_offsets_split[1] + '.inf'))
command.append("-y")
command.append(os.path.join(config["WORKSPACE"], "PreBuildReport.txt"))
command.append("--log=" + os.path.join(config["WORKSPACE"], "PreBuild.log"))

_, _, _, code = execute_script(command, config)
if code != 0:
print(" ".join(command))
print("Error re-generating PlatformOffset header files")
sys.exit(1)

# Build AmlGenOffset command to consume the *.offset.h and produce AmlOffsetTable.c for StaticSkuDataDxe use.

# Get destination path and filename from config
relative_file_path = os.path.normpath(config["STRIPPED_AML_OFFSETS_FILE_PATH"]) # get path relative to Platform/Intel
out_file_path = os.path.join(config["WORKSPACE_PLATFORM"], relative_file_path) # full path to output file
out_file_dir = os.path.dirname(out_file_path) # remove filename

out_file_root_ext = os.path.splitext(os.path.basename(out_file_path)) # root and extension of output file

# Get relative path for the generated offset.h file
relative_dsdt_file_path = os.path.normpath(config["DSDT_TABLE_FILE_PATH"]) # path relative to Platform/Intel
dsdt_file_root_ext = os.path.splitext(os.path.basename(relative_dsdt_file_path)) # root and extension of generated offset.h file

# Generate output directory if it doesn't exist
if not os.path.exists(out_file_dir):
os.mkdir(out_file_dir)

command = ["python",
os.path.join(config["MIN_PACKAGE_TOOLS"], "AmlGenOffset", "AmlGenOffset.py"),
"-d", "--aml_filter", config["AML_FILTER"],
"-o", out_file_path,
os.path.join(config["BUILD_X64"], aml_offsets_split[0], aml_offsets_split[1], aml_offsets_split[1], "OUTPUT", os.path.dirname(relative_dsdt_file_path), dsdt_file_root_ext[0] + ".offset.h")]

# execute the command
_, _, _, code = execute_script(command, config)
if code != 0:
print(" ".join(command))
print("Error re-generating PlatformOffset header files")
sys.exit(1)

print("GenOffset done")


return None

def _merge_files(files, ofile):
Expand Down
15 changes: 15 additions & 0 deletions Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,18 @@ FSP_BINARY_BUILD = FALSE
FSP_TEST_RELEASE = FALSE
SECURE_BOOT_ENABLE = FALSE
BIOS_INFO_GUID = 4A4CA1C6-871C-45BB-8801-6910A7AA5807

#
# AML offset table generation configuration options
# All paths should use / and be relative to edk2-platforms/Platform/Intel
#
# AML_FILTER - AML filter is used to strip out unused AML offset data
# AML_OFFSETS_PATH - Path to INF file that builds AML offsets C source file
# The directory name, DSC file name, INF file name, and BASE_NAME must match identically
# DSDT_TABLE_FILE_PATH - Path to DSDT ASL file for the board
# STRIPPED_AML_OFFSETS_FILE_PATH - Target AML offset data file consumed by UBA driver
#
AML_FILTER = \"PSYS\" .\.DRVT\" .\.FIX[0-9,A-Z] BBI[0] BBU[0] CRCM BAR0 .\.CCT[0-9A-Z]\" .\.CFH[0-9A-Z]\" .\.FXCD\" .\.FXST\" .\.FXIN\" .\.FXOU\" .\.FXBS\" .\.FXFH\" .\.CENA\" .\.DRVT\" .\.CFIS\" {NULL };
AML_OFFSETS_PATH = WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets
DSDT_TABLE_FILE_PATH = WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Dsdt/EPRPPlatform10nm.asl
STRIPPED_AML_OFFSETS_FILE_PATH = WhitleyOpenBoardPkg/Uba/UbaMain/StaticSkuDataDxe/AmlOffsetTable.c

0 comments on commit 16ea1b3

Please sign in to comment.