diff --git a/MdeModulePkg/Include/UniversalPayload/SerialPortInfo.h b/MdeModulePkg/Include/UniversalPayload/SerialPortInfo.h index 3c4459e2c032..e3c9f9365476 100644 --- a/MdeModulePkg/Include/UniversalPayload/SerialPortInfo.h +++ b/MdeModulePkg/Include/UniversalPayload/SerialPortInfo.h @@ -19,6 +19,7 @@ typedef struct { BOOLEAN UseMmio; UINT8 RegisterStride; UINT32 BaudRate; + UINT32 ClockRate; EFI_PHYSICAL_ADDRESS RegisterBase; } UNIVERSAL_PAYLOAD_SERIAL_PORT_INFO; #pragma pack() diff --git a/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c b/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c index efaab326bb68..e1a422270ddc 100644 --- a/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c +++ b/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.c @@ -94,6 +94,11 @@ PlatformHookSerialPortInitialize ( return Status; } + Status = PcdSet32S (PcdSerialClockRate, SerialPortInfo->ClockRate); + if (RETURN_ERROR (Status)) { + return Status; + } + return RETURN_SUCCESS; } diff --git a/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf b/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf index 7ac6bfa1b1b0..e2908cfbca24 100644 --- a/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf +++ b/UefiPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf @@ -38,3 +38,4 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase ## PRODUCES gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate ## PRODUCES gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterStride ## PRODUCES + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialClockRate ## PRODUCES diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c index abda59312d5e..8f1339763c05 100644 --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c @@ -431,6 +431,7 @@ _ModuleEntryPoint ( UniversalSerialPort->UseMmio = (SerialPortInfo.Type == 1) ? FALSE : TRUE; UniversalSerialPort->RegisterBase = SerialPortInfo.BaseAddr; UniversalSerialPort->BaudRate = SerialPortInfo.Baud; + UniversalSerialPort->ClockRate = SerialPortInfo.InputHertz; 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) {