/** @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 #include 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_