Reviewed-by: Guo Dong <guo.d...@intel.com>
> -----Original Message----- > From: Liu, Zhiguang <zhiguang....@intel.com> > Sent: Sunday, June 20, 2021 8:47 AM > To: devel@edk2.groups.io > Cc: Ma, Maurice <maurice...@intel.com>; Dong, Guo > <guo.d...@intel.com>; You, Benjamin <benjamin....@intel.com> > Subject: [PATCH 03/12] UefiPayloadPkg: Add a separate PlatformHookLib for > Universal Payload > > Add a new separate PlatformHookLib for Universal Payload to consume Guid > Hob gUniversalPayloadSerialPortInfoGuid to get serial port information > > Cc: Maurice Ma <maurice...@intel.com> > Cc: Guo Dong <guo.d...@intel.com> > Cc: Benjamin You <benjamin....@intel.com> > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > --- > > UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib. > c | 82 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > ++++++++++++++++++++++++ > > UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLib. > inf | 41 +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 123 insertions(+) > > diff --git > a/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLi > b.c > b/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLi > b.c > new file mode 100644 > index 0000000000..6705f29505 > --- /dev/null > +++ > b/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLi > b.c > @@ -0,0 +1,82 @@ > +/** @file > > + Platform Hook Library instance for UART device. > > + > > + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#include <Base.h> > > +#include <PiDxe.h> > > +#include <UniversalPayload/SerialPortInfo.h> > > +#include <Library/PlatformHookLib.h> > > +#include <Library/PcdLib.h> > > +#include <Library/HobLib.h> > > + > > +/** > > + Performs platform specific initialization required for the CPU to access > > + the hardware associated with a SerialPortLib instance. This function does > > + not initialize the serial port hardware itself. Instead, it initializes > > + hardware devices that are required for the CPU to access the serial port > > + hardware. This function may be called more than once. > > + > > + @retval RETURN_SUCCESS The platform specific initialization > succeeded. > > + @retval RETURN_DEVICE_ERROR The platform specific initialization could > not be completed. > > + > > +**/ > > +RETURN_STATUS > > +EFIAPI > > +PlatformHookSerialPortInitialize ( > > + VOID > > + ) > > +{ > > + RETURN_STATUS Status; > > + UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO *SerialPortInfo; > > + UINT8 *GuidHob; > > + UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader; > > + > > + GuidHob = GetFirstGuidHob (&gUniversalPayloadSerialPortInfoGuid); > > + if (GuidHob == NULL) { > > + return EFI_NOT_FOUND; > > + } > > + > > + GenericHeader = (UNIVERSAL_PAYLOAD_GENERIC_HEADER *) > GET_GUID_HOB_DATA (GuidHob); > > + if ((sizeof (UNIVERSAL_PAYLOAD_GENERIC_HEADER) > > GET_GUID_HOB_DATA_SIZE (GuidHob)) || (GenericHeader->Length > > GET_GUID_HOB_DATA_SIZE (GuidHob))) { > > + return EFI_NOT_FOUND; > > + } > > + > > + if (GenericHeader->Revision == > UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO_REVISION) { > > + SerialPortInfo = (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO *) > GET_GUID_HOB_DATA (GuidHob); > > + if (GenericHeader->Length < > UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD > (UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO, RegisterBase)) { > > + // > > + // Return if can't find the Serial Port Info Hob with enough length > > + // > > + return EFI_NOT_FOUND; > > + } > > + > > + Status = PcdSetBoolS (PcdSerialUseMmio, SerialPortInfo->UseMmio); > > + if (RETURN_ERROR (Status)) { > > + return Status; > > + } > > + Status = PcdSet64S (PcdSerialRegisterBase, SerialPortInfo->RegisterBase); > > + if (RETURN_ERROR (Status)) { > > + return Status; > > + } > > + Status = PcdSet32S (PcdSerialRegisterStride, SerialPortInfo- > >RegisterStride); > > + if (RETURN_ERROR (Status)) { > > + return Status; > > + } > > + Status = PcdSet32S (PcdSerialBaudRate, SerialPortInfo->BaudRate); > > + if (RETURN_ERROR (Status)) { > > + return Status; > > + } > > + Status = PcdSet64S (PcdUartDefaultBaudRate, SerialPortInfo->BaudRate); > > + if (RETURN_ERROR (Status)) { > > + return Status; > > + } > > + > > + return RETURN_SUCCESS; > > + } > > + > > + return EFI_NOT_FOUND; > > +} > > diff --git > a/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLi > b.inf > b/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLi > b.inf > new file mode 100644 > index 0000000000..41e05ddf54 > --- /dev/null > +++ > b/UefiPayloadPkg/Library/UniversalPayloadPlatformHookLib/PlatformHookLi > b.inf > @@ -0,0 +1,41 @@ > +## @file > > +# Platform Hook Library instance for UART device for Universal Payload. > > +# > > +# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> > > +# > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > +# > > +## > > + > > +[Defines] > > + INF_VERSION = 0x00010005 > > + BASE_NAME = PlatformHookLib > > + FILE_GUID = 807E05AB-9411-429F-97F0-FE425BF6B094 > > + MODULE_TYPE = BASE > > + VERSION_STRING = 1.0 > > + LIBRARY_CLASS = PlatformHookLib > > + CONSTRUCTOR = PlatformHookSerialPortInitialize > > + > > +[Sources] > > + PlatformHookLib.c > > + > > +[LibraryClasses] > > + PcdLib > > + BaseLib > > + HobLib > > + DxeHobListLib > > + > > +[Packages] > > + MdePkg/MdePkg.dec > > + MdeModulePkg/MdeModulePkg.dec > > + UefiPayloadPkg/UefiPayloadPkg.dec > > + > > +[Guids] > > + gUniversalPayloadSerialPortInfoGuid > > + > > +[Pcd] > > + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseMmio ## PRODUCES > > + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase ## > PRODUCES > > + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate ## PRODUCES > > + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride ## > PRODUCES > > + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate ## PRODUCES > > -- > 2.16.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#76864): https://edk2.groups.io/g/devel/message/76864 Mute This Topic: https://groups.io/mt/83669557/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-