diff options
| author | Sai Varun Venkatapuram <saivarun.venkatapuram@amd.com> | 2026-08-18 12:27:35 +0530 |
|---|---|---|
| committer | Sai Varun Venkatapuram <saivarun.venkatapuram@amd.com> | 2026-09-02 02:25:58 +0530 |
| commit | a7a4acd8a92660151e15dc33ad730512b7fa0dfb (patch) | |
| tree | 68e75448b1ac7b18e70f4796b4673618618f617e | |
| parent | 8f218dd07a375d49c6187c0b1be6bee4673187f6 (diff) | |
| download | arm-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.c | 16 | ||||
| -rw-r--r-- | plat/xilinx/zynqmp/include/zynqmp_def.h | 2 |
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) |
