]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
plat/arm: fvp: Implement methods to retrieve soc-id information
authorManish V Badarkhe <Manish.Badarkhe@arm.com>
Tue, 4 Aug 2020 16:09:10 +0000 (17:09 +0100)
committerManish V Badarkhe <manish.badarkhe@arm.com>
Tue, 18 Aug 2020 03:07:22 +0000 (03:07 +0000)
Implemented platform functions to retrieve the soc-id information
for FVP platform.

Change-Id: Id3df02ab290a210310e8d34ec9d706a59d817517
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
plat/arm/board/fvp/fvp_common.c
plat/arm/board/fvp/fvp_def.h

index 6f439b8e2e7c138bb9c09f09d9b1e1f16324ad87..6e479ac4fc49e96d7639936b2ba57616e1fa05ec 100644 (file)
 #include <drivers/arm/sp804_delay_timer.h>
 #include <drivers/generic_delay_timer.h>
 #include <lib/mmio.h>
+#include <lib/smccc.h>
 #include <lib/xlat_tables/xlat_tables_compat.h>
-#include <plat/arm/common/arm_config.h>
-#include <plat/arm/common/plat_arm.h>
-#include <plat/common/platform.h>
 #include <platform_def.h>
-
+#include <services/arm_arch_svc.h>
 #if SPM_MM
 #include <services/spm_mm_partition.h>
 #endif
 
+#include <plat/arm/common/arm_config.h>
+#include <plat/arm/common/plat_arm.h>
+#include <plat/common/platform.h>
+
 #include "fvp_private.h"
 
 /* Defines for GIC Driver build time selection */
@@ -437,3 +439,40 @@ void fvp_timer_init(void)
                        CNTCR_FCREQ(0U) | CNTCR_EN);
 #endif /* USE_SP804_TIMER */
 }
+
+/*****************************************************************************
+ * plat_is_smccc_feature_available() - This function checks whether SMCCC
+ *                                     feature is availabile for platform.
+ * @fid: SMCCC function id
+ *
+ * Return SMC_ARCH_CALL_SUCCESS if SMCCC feature is available and
+ * SMC_ARCH_CALL_NOT_SUPPORTED otherwise.
+ *****************************************************************************/
+int32_t plat_is_smccc_feature_available(u_register_t fid)
+{
+       switch (fid) {
+       case SMCCC_ARCH_SOC_ID:
+               return SMC_ARCH_CALL_SUCCESS;
+       default:
+               return SMC_ARCH_CALL_NOT_SUPPORTED;
+       }
+}
+
+/* Get SOC version */
+int32_t plat_get_soc_version(void)
+{
+       return (int32_t)
+               ((ARM_SOC_IDENTIFICATION_CODE << ARM_SOC_IDENTIFICATION_SHIFT)
+                | (ARM_SOC_CONTINUATION_CODE << ARM_SOC_CONTINUATION_SHIFT)
+                | FVP_SOC_ID);
+}
+
+/* Get SOC revision */
+int32_t plat_get_soc_revision(void)
+{
+       unsigned int sys_id;
+
+       sys_id = mmio_read_32(V2M_SYSREGS_BASE + V2M_SYS_ID);
+       return (int32_t)((sys_id >> V2M_SYS_ID_REV_SHIFT) &
+                       V2M_SYS_ID_REV_MASK);
+}
index c5d1568581e872045b68c471bcaff87eb670cfc5..4efe69258c49aeaac0bb0f01be9cdd9cdc1e2ff0 100644 (file)
 #define FVP_CCI                        1
 #define FVP_CCN                        2
 
+/******************************************************************************
+ * Definition of platform soc id
+ *****************************************************************************/
+#define FVP_SOC_ID      0
+
 /*******************************************************************************
  * FVP memory map related constants
  ******************************************************************************/