xref: /rk3399_ARM-atf/plat/xilinx/common/versal.c (revision 079c6e2403fd07db2b41f7c6e7e8c568467a2c6b)
1*079c6e24SAkshay Belsare /*
2*079c6e24SAkshay Belsare  * Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
3*079c6e24SAkshay Belsare  *
4*079c6e24SAkshay Belsare  * SPDX-License-Identifier: BSD-3-Clause
5*079c6e24SAkshay Belsare  */
6*079c6e24SAkshay Belsare 
7*079c6e24SAkshay Belsare #include <common/debug.h>
8*079c6e24SAkshay Belsare #include <lib/mmio.h>
9*079c6e24SAkshay Belsare #include <lib/smccc.h>
10*079c6e24SAkshay Belsare #include <services/arm_arch_svc.h>
11*079c6e24SAkshay Belsare 
12*079c6e24SAkshay Belsare #include <plat_private.h>
13*079c6e24SAkshay Belsare #include <plat_startup.h>
14*079c6e24SAkshay Belsare #include <pm_api_sys.h>
15*079c6e24SAkshay Belsare 
16*079c6e24SAkshay Belsare /**
17*079c6e24SAkshay Belsare  * plat_is_smccc_feature_available() - This function checks whether SMCCC
18*079c6e24SAkshay Belsare  *					feature is availabile for platform.
19*079c6e24SAkshay Belsare  * @fid: SMCCC function id
20*079c6e24SAkshay Belsare  *
21*079c6e24SAkshay Belsare  * Return:
22*079c6e24SAkshay Belsare  * * SMC_ARCH_CALL_SUCCESS		- if SMCCC feature is available
23*079c6e24SAkshay Belsare  * * SMC_ARCH_CALL_NOT_SUPPORTED	- Otherwise
24*079c6e24SAkshay Belsare  */
25*079c6e24SAkshay Belsare int32_t plat_is_smccc_feature_available(u_register_t fid)
26*079c6e24SAkshay Belsare {
27*079c6e24SAkshay Belsare 	switch (fid) {
28*079c6e24SAkshay Belsare 	case SMCCC_ARCH_SOC_ID:
29*079c6e24SAkshay Belsare 		return SMC_ARCH_CALL_SUCCESS;
30*079c6e24SAkshay Belsare 	default:
31*079c6e24SAkshay Belsare 		return SMC_ARCH_CALL_NOT_SUPPORTED;
32*079c6e24SAkshay Belsare 	}
33*079c6e24SAkshay Belsare }
34*079c6e24SAkshay Belsare 
35*079c6e24SAkshay Belsare /**
36*079c6e24SAkshay Belsare  * plat_get_soc_version() - Get the SOC version of the platform
37*079c6e24SAkshay Belsare  *
38*079c6e24SAkshay Belsare  * This function is called when the SoC_ID_type == 0.
39*079c6e24SAkshay Belsare  * For further details please refer to section 7.4 of SMC Calling Convention
40*079c6e24SAkshay Belsare  *
41*079c6e24SAkshay Belsare  * Return:  SiP defined SoC version in JEP-106
42*079c6e24SAkshay Belsare  */
43*079c6e24SAkshay Belsare int32_t plat_get_soc_version(void)
44*079c6e24SAkshay Belsare {
45*079c6e24SAkshay Belsare 	uint32_t manfid;
46*079c6e24SAkshay Belsare 
47*079c6e24SAkshay Belsare 	manfid = SOC_ID_SET_JEP_106(JEDEC_XILINX_BKID, JEDEC_XILINX_MFID);
48*079c6e24SAkshay Belsare 
49*079c6e24SAkshay Belsare 	return (int32_t)(manfid | (platform_version & SOC_ID_IMPL_DEF_MASK));
50*079c6e24SAkshay Belsare }
51*079c6e24SAkshay Belsare 
52*079c6e24SAkshay Belsare /**
53*079c6e24SAkshay Belsare  * plat_get_soc_revision() - Get the SOC revision for the platform
54*079c6e24SAkshay Belsare  *
55*079c6e24SAkshay Belsare  * This function is called when the  SoC_ID_type == 1
56*079c6e24SAkshay Belsare  * For further details please refer to section 7.4 of SMC Calling Convention
57*079c6e24SAkshay Belsare  *
58*079c6e24SAkshay Belsare  * Return:  SiP defined SoC revision
59*079c6e24SAkshay Belsare  */
60*079c6e24SAkshay Belsare int32_t plat_get_soc_revision(void)
61*079c6e24SAkshay Belsare {
62*079c6e24SAkshay Belsare 	return (platform_id & SOC_ID_REV_MASK);
63*079c6e24SAkshay Belsare }
64