From bdcf08f5bc20724155af22059bad6043bdb824b3 Mon Sep 17 00:00:00 2001 From: Jiewen Yao Date: Wed, 11 Oct 2017 17:00:17 +0800 Subject: Add PciSegmentInfoLibSimple. This instance will be consumed by TestPointCheckLib. It reports PCI segment information in PEI phase, to let TestPointCheckLib go through the PCI to check BME bit. Cc: Michael A Kubacki Cc: Amy Chan Cc: Chasel Chiu Cc: Brett Wang Cc: Daocheng Bu Cc: Isaac W Oram Cc: Rangasai V Chaganty Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao Reviewed-by: Amy Chan --- .../PciSegmentInfoLibSimple.c | 60 ++++++++++++++++++++++ .../PciSegmentInfoLibSimple.inf | 42 +++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.c create mode 100644 Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.inf (limited to 'Platform/Intel/MinPlatformPkg/Pci') diff --git a/Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.c b/Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.c new file mode 100644 index 0000000000..a7e09f16b8 --- /dev/null +++ b/Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.c @@ -0,0 +1,60 @@ +/** @file + Default PCI Segment Information Library that returns one segment whose + segment base address equals to PcdPciExpressBaseAddress. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ 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 +#include +#include +#include +#include + +#define PCI_SEGMENT_INFO_HOB_GUID { \ + 0x6eab7169, 0x9b21, 0x450e, 0x99, 0xe8, 0xe, 0xb1, 0x1b, 0x7d, 0xfe, 0xcb \ + } + +EFI_GUID mPciSegmentInfoHobGuid = PCI_SEGMENT_INFO_HOB_GUID; + +/** + Return an array of PCI_SEGMENT_INFO holding the segment information. + + Note: The returned array/buffer is owned by callee. + + @param Count Return the count of segments. + + @retval A callee owned array holding the segment information. +**/ +PCI_SEGMENT_INFO * +EFIAPI +GetPciSegmentInfo ( + OUT UINTN *Count + ) +{ + VOID *Hob; + PCI_SEGMENT_INFO *PciSegmentInfo; + + *Count = 1; + Hob = GetFirstGuidHob (&mPciSegmentInfoHobGuid); + if (Hob != NULL) { + PciSegmentInfo = GET_GUID_HOB_DATA(Hob); + } else { + PciSegmentInfo = BuildGuidHob (&mPciSegmentInfoHobGuid, sizeof(PCI_SEGMENT_INFO)); + ASSERT(PciSegmentInfo != NULL); + PciSegmentInfo->SegmentNumber = 0; + PciSegmentInfo->BaseAddress = PcdGet64(PcdPciExpressBaseAddress); + PciSegmentInfo->StartBusNumber = 0; + PciSegmentInfo->EndBusNumber = 0xFF; + } + return PciSegmentInfo; +} diff --git a/Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.inf b/Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.inf new file mode 100644 index 0000000000..081910e5c5 --- /dev/null +++ b/Platform/Intel/MinPlatformPkg/Pci/Library/PciSegmentInfoLibSimple/PciSegmentInfoLibSimple.inf @@ -0,0 +1,42 @@ +## @file +# Instance of PCI SegmentInfo Library. +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# +# 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 = PciSegmentInfoLibSimple + FILE_GUID = ACA4E371-3D0E-47BE-8000-5030F97CF9E7 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + LIBRARY_CLASS = PciSegmentInfoLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + PciSegmentInfoLibSimple.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + PcdLib + DebugLib + HobLib + +[Pcd] + gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress -- cgit v1.2.3