mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-11 14:28:08 +01:00
84f41b2b58
Signed-off-by: Slice <sergey.slice@gmail.com>
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_
|