]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
feat(fvp): add plat API to set and get the DRTM error
authorManish V Badarkhe <Manish.Badarkhe@arm.com>
Tue, 12 Jul 2022 20:48:04 +0000 (21:48 +0100)
committerManish V Badarkhe <Manish.Badarkhe@arm.com>
Wed, 5 Oct 2022 14:25:28 +0000 (15:25 +0100)
Added a platform function to set and get DRTM error.
Also, added a platform function to reset the system.

Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: I471f2387f8c78b21a06af063a6fa02cda3646557

include/plat/arm/common/plat_arm.h
include/plat/common/plat_drtm.h
include/plat/common/platform.h
plat/arm/board/fvp/fvp_drtm_err.c [new file with mode: 0644]
plat/arm/board/fvp/fvp_err.c
plat/arm/board/fvp/platform.mk
plat/arm/common/arm_common.mk
plat/arm/common/arm_err.c

index d0603328631e1ffb4103463f26ea39064fb371f1..6c0d91d1feb958b1f1b6d6103cb64d5b70671c23 100644 (file)
@@ -297,6 +297,7 @@ void plat_arm_interconnect_exit_coherency(void);
 void plat_arm_program_trusted_mailbox(uintptr_t address);
 bool plat_arm_bl1_fwu_needed(void);
 __dead2 void plat_arm_error_handler(int err);
+__dead2 void plat_arm_system_reset(void);
 
 /*
  * Optional functions in ARM standard platforms
index e9b8d6a7083401989b73b6d3f4022e4fc4dd6c8f..754fa1a4033dbddff0a9513f2cf366fc498798fd 100644 (file)
@@ -60,4 +60,8 @@ uint64_t plat_drtm_get_tcb_hash_table_size(void);
 uint64_t plat_drtm_get_imp_def_dlme_region_size(void);
 uint64_t plat_drtm_get_tcb_hash_features(void);
 
+/* DRTM error handling functions */
+int plat_set_drtm_error(uint64_t error_code);
+int plat_get_drtm_error(uint64_t *error_code);
+
 #endif /* PLAT_DRTM_H */
index 58e08d4aa5518a7d3314c1a00defe89eeb25df12..c90441c678d7f154dc0cd204951f560622200461 100644 (file)
@@ -128,6 +128,7 @@ int plat_crash_console_putc(int c);
 void plat_crash_console_flush(void);
 void plat_error_handler(int err) __dead2;
 void plat_panic_handler(void) __dead2;
+void plat_system_reset(void) __dead2;
 const char *plat_log_get_prefix(unsigned int log_level);
 void bl2_plat_preload_setup(void);
 int plat_try_next_boot_source(void);
diff --git a/plat/arm/board/fvp/fvp_drtm_err.c b/plat/arm/board/fvp/fvp_drtm_err.c
new file mode 100644 (file)
index 0000000..95259fa
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stdint.h>
+
+#include <plat/common/platform.h>
+
+int plat_set_drtm_error(uint64_t error_code)
+{
+       /* TODO: Set DRTM error in NV-storage */
+       return 0;
+}
+
+int plat_get_drtm_error(uint64_t *error_code)
+{
+       /* TODO: Get DRTM error from NV-storage */
+       *error_code = 0;
+       return 0;
+}
index 1f9f0dd14781b7ef1c0e90be64a387557b46926c..244659ab73f51100adb69b4351ee67eb6d9f81dd 100644 (file)
@@ -29,3 +29,15 @@ __dead2 void plat_arm_error_handler(int err)
        for (;;)
                wfi();
 }
+
+void __dead2 plat_arm_system_reset(void)
+{
+       /* Write the System Configuration Control Register */
+       mmio_write_32(V2M_SYSREGS_BASE + V2M_SYS_CFGCTRL,
+                     V2M_CFGCTRL_START |
+                     V2M_CFGCTRL_RW |
+                     V2M_CFGCTRL_FUNC(V2M_FUNC_REBOOT));
+       wfi();
+       ERROR("FVP System Reset: operation not handled.\n");
+       panic();
+}
index eb2b5e517dfadc5a0513a9faa8e5cd92959f52b3..5a21ff6669c8261799a7c3f5584674ba6b53c3c7 100644 (file)
@@ -414,10 +414,13 @@ endif
 endif
 
 ifeq (${DRTM_SUPPORT}, 1)
-BL31_SOURCES   += plat/arm/board/fvp/fvp_drtm_dma_prot.c       \
+BL31_SOURCES   += plat/arm/board/fvp/fvp_drtm_addr.c   \
+                 plat/arm/board/fvp/fvp_drtm_dma_prot.c        \
+                 plat/arm/board/fvp/fvp_drtm_err.c     \
                  plat/arm/board/fvp/fvp_drtm_measurement.c     \
                  plat/arm/board/fvp/fvp_drtm_stub.c    \
-                 plat/arm/common/arm_dyn_cfg.c
+                 plat/arm/common/arm_dyn_cfg.c         \
+                 plat/arm/board/fvp/fvp_err.c
 endif
 
 ifeq (${TRUSTED_BOARD_BOOT}, 1)
index ccf2b45971ed693bd32940e80d8d4e0d488342e6..6f3b889c3ebda037d9fd0b9cf01f133bc4b9c556 100644 (file)
@@ -363,6 +363,10 @@ BL31_SOURCES               +=      plat/common/plat_spmd_manifest.c        \
 BL31_SOURCES           +=      ${FDT_WRAPPERS_SOURCES}
 endif
 
+ifeq (${DRTM_SUPPORT},1)
+BL31_SOURCES            +=     plat/arm/common/arm_err.c
+endif
+
 ifneq (${TRUSTED_BOARD_BOOT},0)
 
     # Include common TBB sources
index f80ba78c7327254962b4fad964000a8a1d216978..fa36e8d3ad7e57c214d293dd323cb9caabdf4843 100644 (file)
@@ -13,3 +13,8 @@ void __dead2 plat_error_handler(int err)
 {
        plat_arm_error_handler(err);
 }
+
+void __dead2 plat_system_reset(void)
+{
+       plat_arm_system_reset();
+}