mirror of
https://github.com/acidanthera/audk.git
synced 2025-08-20 09:08:10 +02:00
In some scenarios, the information of Bios Version, Bios Release and Embedded Controller Firmware Release are fetched during UEFI booting. This patch supports updating those fields dynamically when the PCDs are empty. Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com> Reviewed-by: Rebecca Cran <rebecca@quicinc.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Acked-by: Ard Biesheuvel <ardb@kernel.org>
286 lines
5.6 KiB
C
286 lines
5.6 KiB
C
/** @file
|
|
* OemMiscLib.c
|
|
*
|
|
* Copyright (c) 2022, Ampere Computing LLC. All rights reserved.
|
|
* Copyright (c) 2021, NUVIA Inc. All rights reserved.
|
|
* Copyright (c) 2018, Hisilicon Limited. All rights reserved.
|
|
* Copyright (c) 2018, Linaro Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
*
|
|
**/
|
|
|
|
#include <Uefi.h>
|
|
#include <Guid/ZeroGuid.h>
|
|
#include <Library/BaseMemoryLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/HiiLib.h>
|
|
#include <Library/OemMiscLib.h>
|
|
#include <Library/PcdLib.h>
|
|
|
|
/** Gets the CPU frequency of the specified processor.
|
|
|
|
@param ProcessorIndex Index of the processor to get the frequency for.
|
|
|
|
@return CPU frequency in Hz
|
|
**/
|
|
UINTN
|
|
EFIAPI
|
|
OemGetCpuFreq (
|
|
IN UINT8 ProcessorIndex
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return 0;
|
|
}
|
|
|
|
/** Gets information about the specified processor and stores it in
|
|
the structures provided.
|
|
|
|
@param ProcessorIndex Index of the processor to get the information for.
|
|
@param ProcessorStatus Processor status.
|
|
@param ProcessorCharacteristics Processor characteritics.
|
|
@param MiscProcessorData Miscellaneous processor information.
|
|
|
|
@return TRUE on success, FALSE on failure.
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
OemGetProcessorInformation (
|
|
IN UINTN ProcessorIndex,
|
|
IN OUT PROCESSOR_STATUS_DATA *ProcessorStatus,
|
|
IN OUT PROCESSOR_CHARACTERISTIC_FLAGS *ProcessorCharacteristics,
|
|
IN OUT OEM_MISC_PROCESSOR_DATA *MiscProcessorData
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
/** Gets information about the cache at the specified cache level.
|
|
|
|
@param ProcessorIndex The processor to get information for.
|
|
@param CacheLevel The cache level to get information for.
|
|
@param DataCache Whether the cache is a data cache.
|
|
@param UnifiedCache Whether the cache is a unified cache.
|
|
@param SmbiosCacheTable The SMBIOS Type7 cache information structure.
|
|
|
|
@return TRUE on success, FALSE on failure.
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
OemGetCacheInformation (
|
|
IN UINT8 ProcessorIndex,
|
|
IN UINT8 CacheLevel,
|
|
IN BOOLEAN DataCache,
|
|
IN BOOLEAN UnifiedCache,
|
|
IN OUT SMBIOS_TABLE_TYPE7 *SmbiosCacheTable
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
/** Gets the maximum number of processors supported by the platform.
|
|
|
|
@return The maximum number of processors.
|
|
**/
|
|
UINT8
|
|
EFIAPI
|
|
OemGetMaxProcessors (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return 1;
|
|
}
|
|
|
|
/** Gets the type of chassis for the system.
|
|
|
|
@retval The type of the chassis.
|
|
**/
|
|
MISC_CHASSIS_TYPE
|
|
EFIAPI
|
|
OemGetChassisType (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return MiscChassisTypeUnknown;
|
|
}
|
|
|
|
/** Returns whether the specified processor is present or not.
|
|
|
|
@param ProcessIndex The processor index to check.
|
|
|
|
@return TRUE is the processor is present, FALSE otherwise.
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
OemIsProcessorPresent (
|
|
IN UINTN ProcessorIndex
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
/** Updates the HII string for the specified field.
|
|
|
|
@param HiiHandle The HII handle.
|
|
@param TokenToUpdate The string to update.
|
|
@param Field The field to get information about.
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
OemUpdateSmbiosInfo (
|
|
IN EFI_HII_HANDLE HiiHandle,
|
|
IN EFI_STRING_ID TokenToUpdate,
|
|
IN OEM_MISC_SMBIOS_HII_STRING_FIELD Field
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
}
|
|
|
|
/** Fetches the Type 32 boot information status.
|
|
|
|
@return Boot status.
|
|
**/
|
|
MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
|
|
EFIAPI
|
|
OemGetBootStatus (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return BootInformationStatusNoError;
|
|
}
|
|
|
|
/** Fetches the chassis status when it was last booted.
|
|
|
|
@return Chassis status.
|
|
**/
|
|
MISC_CHASSIS_STATE
|
|
EFIAPI
|
|
OemGetChassisBootupState (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return ChassisStateSafe;
|
|
}
|
|
|
|
/** Fetches the chassis power supply/supplies status when last booted.
|
|
|
|
@return Chassis power supply/supplies status.
|
|
**/
|
|
MISC_CHASSIS_STATE
|
|
EFIAPI
|
|
OemGetChassisPowerSupplyState (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return ChassisStateSafe;
|
|
}
|
|
|
|
/** Fetches the chassis thermal status when last booted.
|
|
|
|
@return Chassis thermal status.
|
|
**/
|
|
MISC_CHASSIS_STATE
|
|
EFIAPI
|
|
OemGetChassisThermalState (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return ChassisStateSafe;
|
|
}
|
|
|
|
/** Fetches the chassis security status when last booted.
|
|
|
|
@return Chassis security status.
|
|
**/
|
|
MISC_CHASSIS_SECURITY_STATE
|
|
EFIAPI
|
|
OemGetChassisSecurityStatus (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return ChassisSecurityStatusNone;
|
|
}
|
|
|
|
/** Fetches the chassis height in RMUs (Rack Mount Units).
|
|
|
|
@return The height of the chassis.
|
|
**/
|
|
UINT8
|
|
EFIAPI
|
|
OemGetChassisHeight (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return 1U;
|
|
}
|
|
|
|
/** Fetches the number of power cords.
|
|
|
|
@return The number of power cords.
|
|
**/
|
|
UINT8
|
|
EFIAPI
|
|
OemGetChassisNumPowerCords (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return 1;
|
|
}
|
|
|
|
/**
|
|
Fetches the system UUID.
|
|
|
|
@param[out] SystemUuid The pointer to the buffer to store the System UUID.
|
|
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
OemGetSystemUuid (
|
|
OUT GUID *SystemUuid
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
CopyGuid (SystemUuid, &gZeroGuid);
|
|
}
|
|
|
|
/** Fetches the BIOS release.
|
|
|
|
@return The BIOS release.
|
|
**/
|
|
UINT16
|
|
EFIAPI
|
|
OemGetBiosRelease (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return PcdGet16 (PcdSystemBiosRelease);
|
|
}
|
|
|
|
/** Fetches the embedded controller firmware release.
|
|
|
|
@return The embedded controller firmware release.
|
|
**/
|
|
UINT16
|
|
EFIAPI
|
|
OemGetEmbeddedControllerFirmwareRelease (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return PcdGet16 (PcdEmbeddedControllerFirmwareRelease);
|
|
}
|