blob: b37dc76c21c7d61ddcad97e767a2f1fee792f2f2 [file] [log] [blame]
Akshay Belsare589ccce2023-05-08 19:00:53 +05301/*
2 * Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <common/debug.h>
8#include <lib/mmio.h>
9#include <lib/smccc.h>
Maheedhar Bollapalli86d6d702024-10-07 09:27:58 +000010#include <plat/common/platform.h>
Akshay Belsare589ccce2023-05-08 19:00:53 +053011#include <services/arm_arch_svc.h>
12
13#include <plat_private.h>
14#include <plat_startup.h>
15#include <pm_api_sys.h>
16
17/**
18 * plat_is_smccc_feature_available() - This function checks whether SMCCC
Prasad Kummari7d0623a2023-06-09 14:32:00 +053019 * feature is availabile for platform.
20 * @fid: SMCCC function id.
Akshay Belsare589ccce2023-05-08 19:00:53 +053021 *
Prasad Kummari7d0623a2023-06-09 14:32:00 +053022 * Return: SMC_ARCH_CALL_SUCCESS - if SMCCC feature is available.
23 * SMC_ARCH_CALL_NOT_SUPPORTED - Otherwise.
24 *
Akshay Belsare589ccce2023-05-08 19:00:53 +053025 */
26int32_t plat_is_smccc_feature_available(u_register_t fid)
27{
28 switch (fid) {
29 case SMCCC_ARCH_SOC_ID:
30 return SMC_ARCH_CALL_SUCCESS;
31 default:
32 return SMC_ARCH_CALL_NOT_SUPPORTED;
33 }
34}
35
36/**
Prasad Kummari7d0623a2023-06-09 14:32:00 +053037 * plat_get_soc_version() - Get the SOC version of the platform.
Akshay Belsare589ccce2023-05-08 19:00:53 +053038 *
Prasad Kummari7d0623a2023-06-09 14:32:00 +053039 * Return: SiP defined SoC version in JEP-106.
Akshay Belsare589ccce2023-05-08 19:00:53 +053040 *
Prasad Kummari7d0623a2023-06-09 14:32:00 +053041 * This function is called when the SoC_ID_type == 0.
42 * For further details please refer to section 7.4 of SMC Calling Convention.
Akshay Belsare589ccce2023-05-08 19:00:53 +053043 */
44int32_t plat_get_soc_version(void)
45{
46 uint32_t manfid;
47
48 manfid = SOC_ID_SET_JEP_106(JEDEC_XILINX_BKID, JEDEC_XILINX_MFID);
49
50 return (int32_t)(manfid | (platform_version & SOC_ID_IMPL_DEF_MASK));
51}
52
53/**
Prasad Kummari7d0623a2023-06-09 14:32:00 +053054 * plat_get_soc_revision() - Get the SOC revision for the platform.
55 *
56 * Return: SiP defined SoC revision.
Akshay Belsare589ccce2023-05-08 19:00:53 +053057 *
58 * This function is called when the SoC_ID_type == 1
59 * For further details please refer to section 7.4 of SMC Calling Convention
Akshay Belsare589ccce2023-05-08 19:00:53 +053060 */
61int32_t plat_get_soc_revision(void)
62{
63 return (platform_id & SOC_ID_REV_MASK);
64}