Skip to content

Commit

Permalink
OcMainLib: Basic sanity check
Browse files Browse the repository at this point in the history
  • Loading branch information
PMheart committed Mar 31, 2022
1 parent 8ce27c6 commit 236514e
Showing 1 changed file with 30 additions and 3 deletions.
33 changes: 30 additions & 3 deletions Library/OcMainLib/OpenCoreMisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,8 @@ OcMiscEarlyInit (
EFI_TIME BootTime;
CONST CHAR8 *AsciiVault;
OCS_VAULT_MODE Vault;
UINTN Index;
BOOLEAN IsBaudRateOk;

ConfigData = OcStorageReadFileUnicode (
Storage,
Expand Down Expand Up @@ -478,16 +480,41 @@ OcMiscEarlyInit (
// Keys: https://github.com/acidanthera/audk/blob/master/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
// Values: https://github.com/acidanthera/audk/blob/bb1bba3d776733c41dbfa2d1dc0fe234819a79f2/MdeModulePkg/MdeModulePkg.dec#L1202
//
PatchPcdSet8 (PcdSerialRegisterAccessWidth, Config->Misc.Serial.RegisterAccessWidth);
if (Config->Misc.Serial.RegisterAccessWidth == 8U || Config->Misc.Serial.RegisterAccessWidth == 32U) {
PatchPcdSet8 (PcdSerialRegisterAccessWidth, Config->Misc.Serial.RegisterAccessWidth);
}
PatchPcdSetBool (PcdSerialUseMmio, Config->Misc.Serial.UseMmio);
PatchPcdSetBool (PcdSerialUseHardwareFlowControl, Config->Misc.Serial.UseHardwareFlowControl);
PatchPcdSetBool (PcdSerialDetectCable, Config->Misc.Serial.DetectCable);
PatchPcdSet64 (PcdSerialRegisterBase, Config->Misc.Serial.RegisterBase);
PatchPcdSet32 (PcdSerialBaudRate, Config->Misc.Serial.BaudRate);

IsBaudRateOk = FALSE;
STATIC UINT32 AllowedBaudRate[] = {
921600U, 460800U, 230400U, 115200U,
57600U, 38400U, 19200U, 9600U, 7200U,
4800U, 3600U, 2400U, 2000U, 1800U,
1200U, 600U, 300U, 150U, 134U,
110U, 75U, 50U
};
for (Index = 0; Index < ARRAY_SIZE (AllowedBaudRate); ++Index) {
if (Config->Misc.Serial.BaudRate == AllowedBaudRate[Index]) {
IsBaudRateOk = TRUE;
break;
}
}
if (IsBaudRateOk) {
PatchPcdSet32 (PcdSerialBaudRate, Config->Misc.Serial.BaudRate);
}
PatchPcdSet8 (PcdSerialLineControl, Config->Misc.Serial.LineControl);
PatchPcdSet8 (PcdSerialFifoControl, Config->Misc.Serial.FifoControl);
PatchPcdSet32 (PcdSerialClockRate, Config->Misc.Serial.ClockRate);
PatchPcdSetPtr (PcdSerialPciDeviceInfo, (UINTN *) &Config->Misc.Serial.PciDeviceInfo.Size, OC_BLOB_GET (&Config->Misc.Serial.PciDeviceInfo));
if (Config->Misc.Serial.PciDeviceInfo.Size <= 41U) {
PatchPcdSetPtr (
PcdSerialPciDeviceInfo,
(UINTN *) &Config->Misc.Serial.PciDeviceInfo.Size,
OC_BLOB_GET (&Config->Misc.Serial.PciDeviceInfo)
);
}
PatchPcdSet32 (PcdSerialExtendedTxFifoSize, Config->Misc.Serial.ExtendedTxFifoSize);
PatchPcdSet32 (PcdSerialRegisterStride, Config->Misc.Serial.RegisterStride);

Expand Down

0 comments on commit 236514e

Please sign in to comment.