From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: intel.com, ip: , mailfrom: michael.a.kubacki@intel.com) Received: from mga17.intel.com (mga17.intel.com []) by groups.io with SMTP; Fri, 04 Oct 2019 10:29:32 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Oct 2019 10:29:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,257,1566889200"; d="scan'208";a="186324620" Received: from makuback-desk1.amr.corp.intel.com ([10.7.159.162]) by orsmga008.jf.intel.com with ESMTP; 04 Oct 2019 10:29:31 -0700 From: "Kubacki, Michael A" To: devel@edk2.groups.io Cc: Eric Dong , Liming Gao Subject: [edk2-platforms][PATCH V2 2/3] BoardModulePkg/FirmwareBootMediaInfoLib: Add library Date: Fri, 4 Oct 2019 10:29:23 -0700 Message-Id: <20191004172924.20240-3-michael.a.kubacki@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: <20191004172924.20240-1-michael.a.kubacki@intel.com> References: <20191004172924.20240-1-michael.a.kubacki@intel.com> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2229 Introduces a new library class FirmwareBootMediaInfoLib that is used to report the firmware boot media device. A default library instance is provided that always returns the firmware boot media is SPI flash. For platforms with other firmware boot media options, a board-specific instance of this library should be used instead to provide the correct firmware boot media device information. Cc: Eric Dong Cc: Liming Gao Signed-off-by: Michael Kubacki --- Platform/Intel/BoardModulePkg/BoardModulePkg.dec | 3 ++ Platform/Intel/BoardModulePkg/BoardModulePkg.dsc | 3 ++ Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf | 35 ++++++++++++++++++++ Platform/Intel/BoardModulePkg/Include/Library/FirmwareBootMediaInfoLib.h | 26 +++++++++++++++ Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.c | 24 ++++++++++++++ 5 files changed, 91 insertions(+) diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dec b/Platform/Intel/BoardModulePkg/BoardModulePkg.dec index 6f13945ca8..f96fb09aa1 100644 --- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dec +++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dec @@ -33,6 +33,9 @@ ## @libraryclass Provide services to get BIOS ID information. BiosIdLib|Include/Library/BiosIdLib.h + ## @libraryclass Provides a service to determine the firmware boot media device. + FirmwareBootMediaInfoLib|Include/Library/FirmwareBootMediaInfoLib.h + [Guids] ## Include Include/Guid/BiosId.h gBiosIdGuid = { 0xC3E36D09, 0x8294, 0x4b97, { 0xA8, 0x57, 0xD5, 0x28, 0x8F, 0xE3, 0x3E, 0x28 } } diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc index 734ead9be8..3d605cf876 100644 --- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc +++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc @@ -33,6 +33,7 @@ DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf [LibraryClasses.common.PEIM] + FirmwareBootMediaLib|IntelSiliconPkg/Library/PeiDxeSmmBootMediaLib/PeiFirmwareBootMediaLib.inf HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf @@ -40,6 +41,7 @@ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf [LibraryClasses.common.DXE_DRIVER] + FirmwareBootMediaLib|IntelSiliconPkg/Library/PeiDxeSmmBootMediaLib/DxeSmmFirmwareBootMediaLib.inf HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf @@ -77,3 +79,4 @@ BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf + BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf diff --git a/Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf b/Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf new file mode 100644 index 0000000000..637aeca2af --- /dev/null +++ b/Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf @@ -0,0 +1,35 @@ +## @file +# Firmware Boot Media Info Library +# +# This library identifies firmware boot media device information used in the boot flow for system initialization +# decisions dependent upon the firmware boot media. +# +# This library instance provides a default implementation of the FirmwareBootMediaInfoLib library class that always +# returns SPI flash as the boot media device. For any system firmware in which this is not the case, an instance +# of this library class should be provided that returns the correct boot media for the platform. +# +# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = PeiFirmwareBootMediaInfoLib + FILE_GUID = 91CC29F5-AEAD-4108-9E91-C8DECDC1C654 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + LIBRARY_CLASS = FirmwareBootMediaInfoLib + +[Sources] + PeiFirmwareBootMediaInfoLib.c + +[Packages] + MdePkg/MdePkg.dec + IntelSiliconPkg/IntelSiliconPkg.dec + BoardModulePkg/BoardModulePkg.dec + +[LibraryClasses] + BaseLib + FirmwareBootMediaLib diff --git a/Platform/Intel/BoardModulePkg/Include/Library/FirmwareBootMediaInfoLib.h b/Platform/Intel/BoardModulePkg/Include/Library/FirmwareBootMediaInfoLib.h new file mode 100644 index 0000000000..b08f21ac74 --- /dev/null +++ b/Platform/Intel/BoardModulePkg/Include/Library/FirmwareBootMediaInfoLib.h @@ -0,0 +1,26 @@ +/** @file + This library identifies the firmware boot media device. + +Copyright (c) 2019, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _FIRMWARE_BOOT_MEDIA_INFO_LIB_H_ +#define _FIRMWARE_BOOT_MEDIA_INFO_LIB_H_ + +#include +#include + +/** + Identifies the firmware boot media type for the current boot. + + @retval BOOT_MEDIA_TYPE The boot media type. A value of FwBootMediaTypeMax indicates the firmware boot media + information is unavailable. +**/ +FW_BOOT_MEDIA_TYPE +IdentifyFirmwareBootMediaType ( + VOID + ); + +#endif diff --git a/Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.c b/Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.c new file mode 100644 index 0000000000..0c29d96033 --- /dev/null +++ b/Platform/Intel/BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.c @@ -0,0 +1,24 @@ +/** @file + This library identifies the firmware boot media device. + +Copyright (c) 2019, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include + +/** + Identifies the firmware boot media type for the current boot. + + @retval BOOT_MEDIA_TYPE The boot media type. A value of FwBootMediaTypeMax indicates the firmware boot media + information is unavailable. +**/ +FW_BOOT_MEDIA_TYPE +IdentifyFirmwareBootMediaType ( + VOID + ) +{ + return FwBootMediaSpi; +} -- 2.16.2.windows.1