mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +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>
272 lines
6.0 KiB
C
272 lines
6.0 KiB
C
/** @file
|
|
*
|
|
* Copyright (c) 2022, Ampere Computing LLC. All rights reserved.
|
|
* Copyright (c) 2021, NUVIA Inc. All rights reserved.
|
|
* Copyright (c) 2015, Hisilicon Limited. All rights reserved.
|
|
* Copyright (c) 2015, Linaro Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
*
|
|
**/
|
|
|
|
#ifndef OEM_MISC_LIB_H_
|
|
#define OEM_MISC_LIB_H_
|
|
|
|
#include <Uefi.h>
|
|
#include <IndustryStandard/SmBios.h>
|
|
|
|
typedef enum {
|
|
CpuCacheL1 = 1,
|
|
CpuCacheL2,
|
|
CpuCacheL3,
|
|
CpuCacheL4,
|
|
CpuCacheL5,
|
|
CpuCacheL6,
|
|
CpuCacheL7,
|
|
CpuCacheLevelMax
|
|
} OEM_MISC_CPU_CACHE_LEVEL;
|
|
|
|
typedef struct {
|
|
UINT8 Voltage; ///< Processor voltage
|
|
UINT16 CurrentSpeed; ///< Current clock speed in MHz
|
|
UINT16 MaxSpeed; ///< Maximum clock speed in MHz
|
|
UINT16 ExternalClock; ///< External clock speed in MHz
|
|
UINT16 CoreCount; ///< Number of cores available
|
|
UINT16 CoresEnabled; ///< Number of cores enabled
|
|
UINT16 ThreadCount; ///< Number of threads per processor
|
|
} OEM_MISC_PROCESSOR_DATA;
|
|
|
|
typedef enum {
|
|
BiosVersionType00,
|
|
ProductNameType01,
|
|
SerialNumType01,
|
|
UuidType01,
|
|
SystemManufacturerType01,
|
|
VersionType01,
|
|
SkuNumberType01,
|
|
FamilyType01,
|
|
AssetTagType02,
|
|
SerialNumberType02,
|
|
BoardManufacturerType02,
|
|
ProductNameType02,
|
|
VersionType02,
|
|
SkuNumberType02,
|
|
ChassisLocationType02,
|
|
AssetTagType03,
|
|
SerialNumberType03,
|
|
VersionType03,
|
|
ChassisTypeType03,
|
|
ManufacturerType03,
|
|
SkuNumberType03,
|
|
ProcessorPartNumType04,
|
|
ProcessorSerialNumType04,
|
|
ProcessorVersionType04,
|
|
SmbiosHiiStringFieldMax
|
|
} OEM_MISC_SMBIOS_HII_STRING_FIELD;
|
|
|
|
/*
|
|
* The following are functions that the each platform needs to
|
|
* implement in its OemMiscLib library.
|
|
*/
|
|
|
|
/** 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
|
|
);
|
|
|
|
/** 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
|
|
);
|
|
|
|
/** 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
|
|
);
|
|
|
|
/** Gets the maximum number of processors supported by the platform.
|
|
|
|
@return The maximum number of processors.
|
|
**/
|
|
UINT8
|
|
EFIAPI
|
|
OemGetMaxProcessors (
|
|
VOID
|
|
);
|
|
|
|
/** Gets the type of chassis for the system.
|
|
|
|
@retval The type of the chassis.
|
|
**/
|
|
MISC_CHASSIS_TYPE
|
|
EFIAPI
|
|
OemGetChassisType (
|
|
VOID
|
|
);
|
|
|
|
/** 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
|
|
);
|
|
|
|
/** 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
|
|
);
|
|
|
|
/** Fetches the Type 32 boot information status.
|
|
|
|
@return Boot status.
|
|
**/
|
|
MISC_BOOT_INFORMATION_STATUS_DATA_TYPE
|
|
EFIAPI
|
|
OemGetBootStatus (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the chassis status when it was last booted.
|
|
|
|
@return Chassis status.
|
|
**/
|
|
MISC_CHASSIS_STATE
|
|
EFIAPI
|
|
OemGetChassisBootupState (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the chassis power supply/supplies status when last booted.
|
|
|
|
@return Chassis power supply/supplies status.
|
|
**/
|
|
MISC_CHASSIS_STATE
|
|
EFIAPI
|
|
OemGetChassisPowerSupplyState (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the chassis thermal status when last booted.
|
|
|
|
@return Chassis thermal status.
|
|
**/
|
|
MISC_CHASSIS_STATE
|
|
EFIAPI
|
|
OemGetChassisThermalState (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the chassis security status when last booted.
|
|
|
|
@return Chassis security status.
|
|
**/
|
|
MISC_CHASSIS_SECURITY_STATE
|
|
EFIAPI
|
|
OemGetChassisSecurityStatus (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the chassis height in RMUs (Rack Mount Units).
|
|
|
|
@return The height of the chassis.
|
|
**/
|
|
UINT8
|
|
EFIAPI
|
|
OemGetChassisHeight (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the number of power cords.
|
|
|
|
@return The number of power cords.
|
|
**/
|
|
UINT8
|
|
EFIAPI
|
|
OemGetChassisNumPowerCords (
|
|
VOID
|
|
);
|
|
|
|
/**
|
|
Fetches the system UUID.
|
|
|
|
@param[out] SystemUuid The pointer to the buffer to store the System UUID.
|
|
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
OemGetSystemUuid (
|
|
OUT GUID *SystemUuid
|
|
);
|
|
|
|
/** Fetches the BIOS release.
|
|
|
|
@return The BIOS release.
|
|
**/
|
|
UINT16
|
|
EFIAPI
|
|
OemGetBiosRelease (
|
|
VOID
|
|
);
|
|
|
|
/** Fetches the embedded controller firmware release.
|
|
|
|
@return The embedded controller firmware release.
|
|
**/
|
|
UINT16
|
|
EFIAPI
|
|
OemGetEmbeddedControllerFirmwareRelease (
|
|
VOID
|
|
);
|
|
|
|
#endif // OEM_MISC_LIB_H_
|