sp_min: Implement `sp_min_plat_runtime_setup()`
authorDimitris Papastamos <dimitris.papastamos@arm.com>
Wed, 7 Jun 2017 12:45:41 +0000 (13:45 +0100)
committerDimitris Papastamos <dimitris.papastamos@arm.com>
Tue, 20 Jun 2017 14:14:01 +0000 (15:14 +0100)
On ARM platforms before exiting from SP_MIN ensure that
the default console is switched to the runtime serial port.

Change-Id: I0ca0d42cc47e345d56179eac16aa3d6712767c9b
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
bl32/sp_min/sp_min_main.c
include/bl32/sp_min/platform_sp_min.h
include/plat/arm/board/common/board_css_def.h
include/plat/arm/common/plat_arm.h
plat/arm/board/fvp/include/platform_def.h
plat/arm/common/sp_min/arm_sp_min_setup.c
plat/common/aarch32/plat_common.c

index 45ad03f994da2b7547e16b1dd464967b3c7a8da2..73a5d69a49487b081223742add8f349c1723f14c 100644 (file)
@@ -176,6 +176,12 @@ void sp_min_main(void)
         * corresponding to the desired security state after the next ERET.
         */
        sp_min_prepare_next_image_entry();
+
+       /*
+        * Perform any platform specific runtime setup prior to cold boot exit
+        * from SP_MIN.
+        */
+       sp_min_plat_runtime_setup();
 }
 
 /******************************************************************************
index 5b4a5c3412d6b92b3db50fe8d141236d4cc8e4cd..70c5c14da0ee796e22e01dc01be1c75bc5672d22 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -12,8 +12,9 @@
  ******************************************************************************/
 void sp_min_early_platform_setup(void *from_bl2,
                void *plat_params_from_bl2);
-void sp_min_plat_arch_setup(void);
 void sp_min_platform_setup(void);
+void sp_min_plat_runtime_setup(void);
+void sp_min_plat_arch_setup(void);
 entry_point_info_t *sp_min_plat_get_bl33_ep_info(void);
 
 #endif /* __PLATFORM_SP_MIN_H__ */
index 11c4b1779109dee92cade9846aafd8ebe8a9d8d0..b0a6baf35ff9ff4291c9ed18a9756be4b67573f1 100644 (file)
@@ -54,6 +54,9 @@
 #define PLAT_ARM_BL31_RUN_UART_BASE            SOC_CSS_UART1_BASE
 #define PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ       SOC_CSS_UART1_CLK_IN_HZ
 
+#define PLAT_ARM_SP_MIN_RUN_UART_BASE          SOC_CSS_UART1_BASE
+#define PLAT_ARM_SP_MIN_RUN_UART_CLK_IN_HZ     SOC_CSS_UART1_CLK_IN_HZ
+
 #define PLAT_ARM_CRASH_UART_BASE               PLAT_ARM_BL31_RUN_UART_BASE
 #define PLAT_ARM_CRASH_UART_CLK_IN_HZ          PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ
 
index 62c0ce7e65aea1e445194d4dbe9381447c778b2b..e61c22f53540a0cdd318f27e241f6f8f24b6a73a 100644 (file)
@@ -163,6 +163,7 @@ void arm_tsp_early_platform_setup(void);
 /* SP_MIN utility functions */
 void arm_sp_min_early_platform_setup(void *from_bl2,
                void *plat_params_from_bl2);
+void arm_sp_min_plat_runtime_setup(void);
 
 /* FIP TOC validity check */
 int arm_io_is_toc_valid(void);
index d9d6eb18ef46ec5a986f9ff4cb1abec2d8ce5b24..f13fc8e6133aa131cbe68d5ec0dd1d2274915b8f 100644 (file)
@@ -56,6 +56,9 @@
 #define PLAT_ARM_BL31_RUN_UART_BASE            V2M_IOFPGA_UART1_BASE
 #define PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ       V2M_IOFPGA_UART1_CLK_IN_HZ
 
+#define PLAT_ARM_SP_MIN_RUN_UART_BASE          V2M_IOFPGA_UART1_BASE
+#define PLAT_ARM_SP_MIN_RUN_UART_CLK_IN_HZ     V2M_IOFPGA_UART1_CLK_IN_HZ
+
 #define PLAT_ARM_CRASH_UART_BASE       PLAT_ARM_BL31_RUN_UART_BASE
 #define PLAT_ARM_CRASH_UART_CLK_IN_HZ  PLAT_ARM_BL31_RUN_UART_CLK_IN_HZ
 
index 79a4b6b4b60ac1b1ff14301f0b189f54a0a2109d..c5408c8f9eddf5e65f901a7bde213aa42d807c72 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -127,6 +127,17 @@ void sp_min_early_platform_setup(void *from_bl2,
        plat_arm_interconnect_enter_coherency();
 }
 
+/*******************************************************************************
+ * Perform any SP_MIN platform runtime setup prior to SP_MIN exit.
+ * Common to ARM standard platforms.
+ ******************************************************************************/
+void arm_sp_min_plat_runtime_setup(void)
+{
+       /* Initialize the runtime console */
+       console_init(PLAT_ARM_SP_MIN_RUN_UART_BASE,
+               PLAT_ARM_SP_MIN_RUN_UART_CLK_IN_HZ, ARM_CONSOLE_BAUDRATE);
+}
+
 /*******************************************************************************
  * Perform platform specific setup for SP_MIN
  ******************************************************************************/
@@ -155,6 +166,11 @@ void sp_min_platform_setup(void)
        plat_arm_pwrc_setup();
 }
 
+void sp_min_plat_runtime_setup(void)
+{
+       arm_sp_min_plat_runtime_setup();
+}
+
 /*******************************************************************************
  * Perform the very early platform specific architectural setup here. At the
  * moment this only initializes the MMU
index f5cfee5b319a884ca8df524352abe1582c775199..d3799d28bce533a1396f260c4f1edaab7049d50c 100644 (file)
@@ -4,6 +4,7 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <console.h>
 #include <platform.h>
 #include <xlat_mmu_helpers.h>
 
  * platforms but may also be overridden by a platform if required.
  */
 #pragma weak bl32_plat_enable_mmu
+#pragma weak sp_min_plat_runtime_setup
 
 void bl32_plat_enable_mmu(uint32_t flags)
 {
        enable_mmu_secure(flags);
 }
+
+void sp_min_plat_runtime_setup(void)
+{
+       /*
+        * Finish the use of console driver in SP_MIN so that any runtime logs
+        * from SP_MIN will be suppressed.
+        */
+       console_uninit();
+}