summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSai Varun Venkatapuram <saivarun.venkatapuram@amd.com>2026-08-18 12:27:35 +0530
committerSai Varun Venkatapuram <saivarun.venkatapuram@amd.com>2026-09-02 02:25:58 +0530
commita7a4acd8a92660151e15dc33ad730512b7fa0dfb (patch)
tree68e75448b1ac7b18e70f4796b4673618618f617e
parent8f218dd07a375d49c6187c0b1be6bee4673187f6 (diff)
downloadarm-trusted-firmware-a7a4acd8a92660151e15dc33ad730512b7fa0dfb.tar.gz
arm-trusted-firmware-a7a4acd8a92660151e15dc33ad730512b7fa0dfb.zip
feat(zynqmp): add SMCCC_ARCH_SOC_ID name
Implement plat_get_soc_name() to support SMCCC_ARCH_SOC_ID SoC name queries on ZynqMP platforms. The generated name includes the platform name and the device IDCODE value. Define PLAT_SOC_NAME as the platform name prefix. Change-Id: Ie0344fd9e65a0dd1d75f8c13ff52bdbd2bd871c8 Signed-off-by: Sai Varun Venkatapuram <saivarun.venkatapuram@amd.com>
-rw-r--r--plat/xilinx/zynqmp/aarch64/zynqmp_common.c16
-rw-r--r--plat/xilinx/zynqmp/include/zynqmp_def.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/plat/xilinx/zynqmp/aarch64/zynqmp_common.c b/plat/xilinx/zynqmp/aarch64/zynqmp_common.c
index 1a4cc2093..c34345039 100644
--- a/plat/xilinx/zynqmp/aarch64/zynqmp_common.c
+++ b/plat/xilinx/zynqmp/aarch64/zynqmp_common.c
@@ -6,6 +6,7 @@
*/
#include <stdbool.h>
+#include <stdio.h>
#include <string.h>
#include <common/debug.h>
@@ -363,6 +364,21 @@ int32_t plat_get_soc_revision(void)
return (int32_t)result;
}
+int32_t plat_get_soc_name(char *soc_name)
+{
+ uint32_t idcode = mmio_read_32(ZYNQMP_CSU_BASEADDR + ZYNQMP_CSU_IDCODE_OFFSET);
+ int32_t ret = SMC_ARCH_CALL_SUCCESS;
+ int rc = snprintf(soc_name, SMCCC_SOC_NAME_LEN, PLAT_SOC_NAME " %08x",
+ idcode);
+
+ /* snprintf return value should be checked to detect truncation */
+ if (rc < 0 || rc >= (int)SMCCC_SOC_NAME_LEN) {
+ ret = SMC_ARCH_CALL_NOT_SUPPORTED;
+ }
+
+ return ret;
+}
+
static uint32_t zynqmp_get_ps_ver(void)
{
uint32_t ver = zynqmp_get_csu_version();
diff --git a/plat/xilinx/zynqmp/include/zynqmp_def.h b/plat/xilinx/zynqmp/include/zynqmp_def.h
index cd3bbbc64..f0bff0a43 100644
--- a/plat/xilinx/zynqmp/include/zynqmp_def.h
+++ b/plat/xilinx/zynqmp/include/zynqmp_def.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2014-2020, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2022-2026, Advanced Micro Devices, Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -201,6 +202,7 @@
#define ZYNQMP_CSU_BASEADDR U(0xFFCA0000)
#define ZYNQMP_CSU_IDCODE_OFFSET U(0x40)
+#define PLAT_SOC_NAME "ZynqMP"
#define ZYNQMP_CSU_IDCODE_XILINX_ID_SHIFT U(0)
#define ZYNQMP_CSU_IDCODE_XILINX_ID_MASK (U(0xFFF) << ZYNQMP_CSU_IDCODE_XILINX_ID_SHIFT)