From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by mx.groups.io with SMTP id smtpd.web09.29016.1612745605407221136 for ; Sun, 07 Feb 2021 16:53:25 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20150623.gappssmtp.com header.s=20150623 header.b=fPWQgjSQ; spf=pass (domain: nuviainc.com, ip: 209.85.215.178, mailfrom: rebecca@nuviainc.com) Received: by mail-pg1-f178.google.com with SMTP id n10so9130801pgl.10 for ; Sun, 07 Feb 2021 16:53:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q3M6Rx+n/SV+UvitmBsl4Ytd21EATpVbHC21NO6aNd0=; b=fPWQgjSQ2x6FclSPcMzohu9wWQOne0KhPskgfjAfuZMmfqUn8Cx3ISdAsGJP6ax5J3 N8W289YyLx/jr5vy84bn9m2qqDZo4mRM9jmgrt91z6Xn5itjbIQTIxco4V/+Bq+KMt3H V573z3FYZU29CmiDjKAKSQqz6eqtP78xyqush9GoLxQ/FoP2whmOWZI8FY9m9AWILblI JCvvGdxHkX3ApAq4x+ytxa4KC/rywuATOY8EcPIDSl/2GSnrirp2EQ1ziU2YuB7L9cTv x8I/l28DpN2Wa4vIRyjGH4RpecZ4wBSCtIXZz9DYOdg5AzKHHLu27+PIOjzu+ABVsrN5 Z8qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Q3M6Rx+n/SV+UvitmBsl4Ytd21EATpVbHC21NO6aNd0=; b=KqLe5vjIsqa3K87GByhfUQQqK3ZC3mPPKcCLMfLs43c4d83KykHT//Y24oJiXdIsPB D2F2mk82CaWzGgfPKwfnRPK7+GHBVZcboWSvUXXGjLaVcVhyGvTWhoh2FtcUzKOn8n9r Vv/lnxqreMgH9dO3KFAYRM83mVuCZX31nmj3o7pPxkH2EAQ+fwCREvo+MokeNsWWU1Dl YIg7e4nMbYOmGcoyj9V3uH6H9eT8MwlnL2KWUrpJFyAOnaomY2fshi4pYydFBr9ye5Q8 OBEE8HNtP0hFMQo75NUk4bwlWuOZ6Jel3vyOXB4XL/I40zjuzFKFrTq4yHm2qJIVBQB/ lxig== X-Gm-Message-State: AOAM530uKmuQ354IXzBwrqmNLn+oTOBu/8KvUkK9bf1EhZ3GMaZqXp8o 8vxLj8fshh+f6Iasx3SN11dyGb+lZWDULbNZYAW9GW1pPZ6S0NctpYfUq/Bwu1Mh6bQ0bjbT9dR lmie62hQjPUCB8ypqN3eqJnlr8Hrc0B9kf2D5xEcfLJlw9FHVAzMphKZXKqaB3Uf7s4eK5A== X-Google-Smtp-Source: ABdhPJy2XyxFePeatcvL2tVHicaudSpLPWqHXg5MyTz16tJCbWK58oyXSChq+MgynRWrzwyWFuPI6Q== X-Received: by 2002:aa7:909a:0:b029:1bc:22d3:9e58 with SMTP id i26-20020aa7909a0000b02901bc22d39e58mr15684318pfa.29.1612745604569; Sun, 07 Feb 2021 16:53:24 -0800 (PST) Return-Path: Received: from cube.int.bluestop.org (c-174-52-16-57.hsd1.ut.comcast.net. [174.52.16.57]) by smtp.gmail.com with ESMTPSA id c6sm11095883pjd.21.2021.02.07.16.53.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Feb 2021 16:53:23 -0800 (PST) From: "Rebecca Cran" To: devel@edk2.groups.io Cc: Rebecca Cran , leif@nuviainc.com, Ard Biesheuvel , nd@arm.com, Sami Mujawar , Liming Gao , Michael D Kinney , Zhiguang Liu , Samer El-Haj-Mahmoud , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v8 11/21] ArmPkg: Add Library/OemMiscLib.h Date: Sun, 7 Feb 2021 17:52:44 -0700 Message-Id: <20210208005254.12176-12-rebecca@nuviainc.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210208005254.12176-1-rebecca@nuviainc.com> References: <20210208005254.12176-1-rebecca@nuviainc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit OemMiscLib.h provides the interface which platforms should implement to interact with the SmbiosMiscDxe and ProcessorSubClassDxe drivers to update SMBIOS tables. Signed-off-by: Rebecca Cran Acked-by: Leif Lindholm --- ArmPkg/Include/Library/OemMiscLib.h | 167 ++++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/ArmPkg/Include/Library/OemMiscLib.h b/ArmPkg/Include/Library/OemMiscLib.h new file mode 100644 index 000000000000..e70019d05f15 --- /dev/null +++ b/ArmPkg/Include/Library/OemMiscLib.h @@ -0,0 +1,167 @@ +/** @file +* +* 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 +{ + ProductNameType01, + SerialNumType01, + UuidType01, + SystemManufacturerType01, + SkuNumberType01, + FamilyType01, + AssertTagType02, + SerialNumberType02, + BoardManufacturerType02, + SkuNumberType02, + ChassisLocationType02, + AssetTagType03, + SerialNumberType03, + VersionType03, + ChassisTypeType03, + ManufacturerType03, + SkuNumberType03, + 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 +**/ +EFIAPI +UINTN +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. +**/ +EFIAPI +BOOLEAN +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. +**/ +EFIAPI +BOOLEAN +OemGetCacheInformation ( + IN UINT8 ProcessorIndex, + IN UINT8 CacheLevel, + IN BOOLEAN DataCache, + IN BOOLEAN UnifiedCache, + IN OUT SMBIOS_TABLE_TYPE7 *SmbiosCacheTable + ); + +/** Gets the maximum number of sockets supported by the platform. + + @return The maximum number of sockets. +**/ +EFIAPI +UINT8 +OemGetProcessorMaxSockets ( + VOID + ); + +/** Gets the type of chassis for the system. + + @param ChassisType The type of the chassis. + + @retval EFI_SUCCESS The chassis type was fetched successfully. +**/ +EFIAPI +EFI_STATUS +OemGetChassisType ( + OUT UINT8 *ChassisType + ); + +/** 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. +**/ +EFIAPI +BOOLEAN +OemIsSocketPresent ( + IN UINTN ProcessorIndex + ); + +/** Updates the HII string for the specified field. + + @param mHiiHandle The HII handle. + @param TokenToUpdate The string to update. + @param Offset The field to get information about. +**/ +EFIAPI +VOID +OemUpdateSmbiosInfo ( + IN EFI_HII_HANDLE HiiHandle, + IN EFI_STRING_ID TokenToUpdate, + IN OEM_MISC_SMBIOS_HII_STRING_FIELD Offset + ); + +#endif // OEM_MISC_LIB_H_ -- 2.26.2