From: "Pranav Madhu" <pranav.madhu@arm.com>
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>,
Sami Mujawar <sami.mujawar@arm.com>
Subject: [edk2-platforms][PATCH V3 02/11] Platform/Sgi: Add GetProductId API for SGI/RD Platforms
Date: Tue, 18 May 2021 22:03:39 +0530 [thread overview]
Message-ID: <20210518163348.16618-3-pranav.madhu@arm.com> (raw)
In-Reply-To: <20210518163348.16618-1-pranav.madhu@arm.com>
Add GetProductId API for SGI/RD Platform. The API returns a product id
in integer format based on the platform description data. The product id
is required for other drivers such as SMBIOS.
Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
---
Platform/ARM/SgiPkg/Include/SgiPlatform.h | 30 +++++++
Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c | 86 +++++++++++++++++++-
2 files changed, 115 insertions(+), 1 deletion(-)
diff --git a/Platform/ARM/SgiPkg/Include/SgiPlatform.h b/Platform/ARM/SgiPkg/Include/SgiPlatform.h
index 1c5366878712..4999c9870b49 100644
--- a/Platform/ARM/SgiPkg/Include/SgiPlatform.h
+++ b/Platform/ARM/SgiPkg/Include/SgiPlatform.h
@@ -68,4 +68,34 @@ typedef struct {
UINTN MultiChipMode;
} SGI_PLATFORM_DESCRIPTOR;
+// Arm SGI/RD Product IDs
+typedef enum {
+ UnknownId = 0,
+ Sgi575,
+ RdN1Edge,
+ RdN1EdgeX2,
+ RdE1Edge,
+ RdV1,
+ RdV1Mc,
+ RdN2
+} ARM_RD_PRODUCT_ID;
+
+// Arm ProductId look-up table
+typedef struct {
+ UINTN ProductId;
+ UINTN PlatformId;
+ UINTN ConfigId;
+ UINTN MultiChipMode;
+} SGI_PRODUCT_ID_LOOKUP;
+
+/**
+ Derermine the product ID.
+
+ Determine the product ID by using the data in the Platform ID Descriptor HOB
+ to lookup for a matching product ID.
+
+ @retval Zero Failed identify platform.
+ @retval Others ARM_RD_PRODUCT_ID of the identified platform.
+**/
+UINT8 SgiGetProductId (VOID);
#endif // __SGI_PLATFORM_H__
diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c
index 9731d7cccede..f27c949dbc24 100644
--- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c
+++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c
@@ -1,6 +1,6 @@
/** @file
*
-* Copyright (c) 2018, ARM Limited. All rights reserved.
+* Copyright (c) 2018-2021, ARM Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-2-Clause-Patent
*
@@ -8,9 +8,12 @@
#include <Library/ArmPlatformLib.h>
#include <Library/BaseLib.h>
+#include <Library/HobLib.h>
#include <Ppi/ArmMpCoreInfo.h>
#include <Ppi/SgiPlatformId.h>
+#include "SgiPlatform.h"
+
UINT64 NtFwConfigDtBlob;
STATIC SGI_NT_FW_CONFIG_INFO_PPI mNtFwConfigDtInfoPpi;
@@ -21,6 +24,51 @@ STATIC ARM_CORE_INFO mCoreInfoTable[] = {
},
};
+STATIC CONST SGI_PRODUCT_ID_LOOKUP SgiProductIdLookup[] = {
+ {
+ Sgi575,
+ SGI575_PART_NUM,
+ SGI575_CONF_NUM,
+ 0
+ },
+ {
+ RdN1Edge,
+ RD_N1E1_EDGE_PART_NUM,
+ RD_N1_EDGE_CONF_ID,
+ 0
+ },
+ {
+ RdN1EdgeX2,
+ RD_N1E1_EDGE_PART_NUM,
+ RD_N1_EDGE_CONF_ID,
+ 1
+ },
+ {
+ RdE1Edge,
+ RD_N1E1_EDGE_PART_NUM,
+ RD_E1_EDGE_CONF_ID,
+ 0
+ },
+ {
+ RdV1,
+ RD_V1_PART_NUM,
+ RD_V1_CONF_ID,
+ 0
+ },
+ {
+ RdV1Mc,
+ RD_V1_PART_NUM,
+ RD_V1_MC_CONF_ID,
+ 1
+ },
+ {
+ RdN2,
+ RD_N2_PART_NUM,
+ RD_N2_CONF_ID,
+ 0
+ }
+};
+
EFI_BOOT_MODE
ArmPlatformGetBootMode (
VOID
@@ -75,3 +123,39 @@ ArmPlatformGetPlatformPpiList (
*PpiListSize = sizeof (gPlatformPpiTable);
*PpiList = gPlatformPpiTable;
}
+
+/**
+ Derermine the product ID.
+
+ Determine the product ID by using the data in the Platform ID Descriptor HOB
+ to lookup for a matching product ID.
+
+ @retval Zero Failed identify platform.
+ @retval Others ARM_RD_PRODUCT_ID of the identified platform.
+**/
+UINT8
+SgiGetProductId (
+ VOID
+ )
+{
+ VOID *SystemIdHob;
+ UINT8 Idx;
+ SGI_PLATFORM_DESCRIPTOR *HobData;
+
+ SystemIdHob = GetFirstGuidHob (&gArmSgiPlatformIdDescriptorGuid);
+ if (SystemIdHob == NULL) {
+ return UnknownId;
+ }
+
+ HobData = (SGI_PLATFORM_DESCRIPTOR *)GET_GUID_HOB_DATA (SystemIdHob);
+
+ for (Idx = 0; Idx < ARRAY_SIZE (SgiProductIdLookup); Idx++) {
+ if ((HobData->PlatformId == SgiProductIdLookup[Idx].PlatformId) &&
+ (HobData->ConfigId == SgiProductIdLookup[Idx].ConfigId) &&
+ (HobData->MultiChipMode == SgiProductIdLookup[Idx].MultiChipMode)) {
+ return SgiProductIdLookup[Idx].ProductId;
+ }
+ }
+
+ return UnknownId;
+}
--
2.17.1
next prev parent reply other threads:[~2021-05-18 16:33 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-18 16:33 [edk2-platforms][PATCH V3 00/11] Add SMBIOS tables for Arm's Reference Design platforms Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 01/11] Platform/Sgi: Define RD-N2 platform id values Pranav Madhu
2021-05-18 16:33 ` Pranav Madhu [this message]
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 03/11] Platform/Sgi: Add Initial SMBIOS support Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 04/11] Platform/Sgi: Add SMBIOS Type1 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 05/11] Platform/Sgi: Add SMBIOS Type3 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 06/11] Platform/Sgi: Add SMBIOS Type4 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 07/11] Platform/Sgi: Add SMBIOS Type7 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 08/11] Platform/Sgi: Add SMBIOS Type16 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 09/11] Platform/Sgi: Add SMBIOS Type17 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 10/11] Platform/Sgi: Add SMBIOS Type19 Table Pranav Madhu
2021-05-18 16:33 ` [edk2-platforms][PATCH V3 11/11] Platform/Sgi: Add SMBIOS Type32 Table Pranav Madhu
2021-05-19 11:30 ` [edk2-devel] [edk2-platforms][PATCH V3 00/11] Add SMBIOS tables for Arm's Reference Design platforms Thomas Abraham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210518163348.16618-3-pranav.madhu@arm.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox