From a6dfbeedff74bd2564642a845c3419044553057e Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Mon, 1 Apr 2024 18:01:11 +0000 Subject: vc/intel/fsp: Refactor FSP header inclusion for EDK2 compatibility This change refactors EDK2 essential header management within the FSP directory to ensure compatibility. Header selection is now dynamically based on: * FSP specification version: Distinguishes between 1.1 and 2.x * EDK2 revision (for FSP 2.x): Chooses the appropriate FSP info header FSP Header | |-> FSP 1.1 specification FSP_INFO_HEADER |-> FSP 2.0 specification EDK2 release |-> EDK2_2017 FSP_INFO_HEADER |-> EDK2_2020 FSP_INFO_HEADER |-> EDK2_2021 FSP_INFO_HEADER |-> EDK2_2023 FSP_INFO_HEADER Any .C/.H file requires to include FSP_INFO_HEADER can now just add the FSP header alone. BUG=b:242829490 TEST=Able to build google/rex0 with 64-bit FSP. Change-Id: I29e5002821843c9cffbc8f6317d1062175f014ff Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/81623 Reviewed-by: Arthur Heymans Tested-by: build bot (Jenkins) --- .../fsp/fsp2_0/IntelFspPkg/Include/FspInfoHeader.h | 18 ++++++++++++++++++ src/vendorcode/intel/fsp/fsp_header.h | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/vendorcode/intel/fsp/fsp2_0/IntelFspPkg/Include/FspInfoHeader.h create mode 100644 src/vendorcode/intel/fsp/fsp_header.h diff --git a/src/vendorcode/intel/fsp/fsp2_0/IntelFspPkg/Include/FspInfoHeader.h b/src/vendorcode/intel/fsp/fsp2_0/IntelFspPkg/Include/FspInfoHeader.h new file mode 100644 index 0000000000..496b8d4572 --- /dev/null +++ b/src/vendorcode/intel/fsp/fsp2_0/IntelFspPkg/Include/FspInfoHeader.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef _FSP_INFO_HEADER_H_ +#define _FSP_INFO_HEADER_H_ + +#if CONFIG_UDK_VERSION == CONFIG_UDK_2017_VERSION +#include +#elif CONFIG_UDK_VERSION == CONFIG_UDK_202005_VERSION +#include +#elif CONFIG_UDK_VERSION == CONFIG_UDK_202111_VERSION +#include +#elif CONFIG_UDK_VERSION == CONFIG_UDK_202302_VERSION +#include +#else +#error "Unknown UDK_VESION!" +#endif + +#endif /* _FSP_INFO_HEADER_H_ */ diff --git a/src/vendorcode/intel/fsp/fsp_header.h b/src/vendorcode/intel/fsp/fsp_header.h new file mode 100644 index 0000000000..148e8d5405 --- /dev/null +++ b/src/vendorcode/intel/fsp/fsp_header.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef _FSP_HEADER_H_ +#define _FSP_HEADER_H_ + +/* + * Intel's code does not have a handle on changing global packing state. + * Therefore, one needs to protect against packing policies that are set + * globally for a compilation unit just by including a header file. + */ +#pragma pack(push) +/* Default bind edk2 UEFI 2.4 types. */ +#include + +#if CONFIG_UDK_VERSION >= CONFIG_UDK_2017_VERSION +#include +#else +#include +#endif +#pragma pack(pop) + +#endif /* _FSP_HEADER_H_ */ -- cgit v1.2.3