diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c index 030a5baed9..abda59312d 100644 --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c @@ -432,6 +432,14 @@ _ModuleEntryPoint ( UniversalSerialPort->RegisterBase = SerialPortInfo.BaseAddr; UniversalSerialPort->BaudRate = SerialPortInfo.Baud; UniversalSerialPort->RegisterStride = (UINT8)SerialPortInfo.RegWidth; + // Set PCD here (vs in PlatformHookLib.c) to avoid adding a new field to UniversalSerialPort struct + if (SerialPortInfo.InputHertz > 0) { + Status = PcdSet32S (PcdSerialClockRate, SerialPortInfo.InputHertz); + if (RETURN_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed to set PcdSerialClockRate; Status = %r\n", Status)); + return Status; + } + } } // The library constructors might depend on serial port, so call it after serial port hob diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf index a3ff4b86ea..e84ef664d3 100644 --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf @@ -96,3 +96,4 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy ## SOMETIMES_CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy ## SOMETIMES_CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate ## PRODUCES