From c768b96e1e71e092223ddad97f947f9d38aa6139 Mon Sep 17 00:00:00 2001
From: Patrick Delaunay <patrick.delaunay@st.com>
Date: Wed, 14 Oct 2020 15:31:25 +0200
Subject: [PATCH] plat/st: stm32mp1: introduce setup_uart_console

Add a new function setup_uart_console for UART console
initialization using device tree information to simplify
sp_min_early_platform_setup().

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Change-Id: I455b43b105a804590297572a977bc242a526df17
Reviewed-on: https://gerrit.st.com/c/mpu/oe/st/tf-a/+/180871
Reviewed-by: CITOOLS <smet-aci-reviews@lists.codex.cro.st.com>
Reviewed-by: Yann GAUTIER <yann.gautier@st.com>
Tested-by: Yann GAUTIER <yann.gautier@st.com>
---
 plat/st/stm32mp1/sp_min/sp_min_setup.c | 48 +++++++++++++++-----------
 1 file changed, 28 insertions(+), 20 deletions(-)

diff --git a/plat/st/stm32mp1/sp_min/sp_min_setup.c b/plat/st/stm32mp1/sp_min/sp_min_setup.c
index b639fcb35..401721c5a 100644
--- a/plat/st/stm32mp1/sp_min/sp_min_setup.c
+++ b/plat/st/stm32mp1/sp_min/sp_min_setup.c
@@ -108,14 +108,39 @@ static void stm32mp1_etzpc_early_setup(void)
 	etzpc_configure_tzma(STM32MP1_ETZPC_TZMA_SYSRAM, TZMA1_SECURE_RANGE);
 }
 
+/*******************************************************************************
+ * Setup UART console using device tree information.
+ ******************************************************************************/
+static void setup_uart_console(void)
+{
+	struct dt_node_info dt_uart_info;
+	unsigned int console_flags;
+	int result;
+
+	result = dt_get_stdout_uart_info(&dt_uart_info);
+	if ((result <= 0) || (dt_uart_info.status == DT_DISABLED)) {
+		return;
+	}
+
+	if (console_stm32_register(dt_uart_info.base, 0,
+				   STM32MP_UART_BAUDRATE, &console) == 0U) {
+		panic();
+	}
+
+	console_flags = CONSOLE_FLAG_BOOT | CONSOLE_FLAG_CRASH |
+			CONSOLE_FLAG_TRANSLATE_CRLF;
+#ifdef DEBUG
+	console_flags |= CONSOLE_FLAG_RUNTIME;
+#endif
+	console_set_scope(&console, console_flags);
+}
+
 /*******************************************************************************
  * Perform any BL32 specific platform actions.
  ******************************************************************************/
 void sp_min_early_platform_setup2(u_register_t arg0, u_register_t arg1,
 				  u_register_t arg2, u_register_t arg3)
 {
-	struct dt_node_info dt_uart_info;
-	int result;
 	bl_params_t *params_from_bl2 = (bl_params_t *)arg0;
 
 	/* Imprecise aborts can be masked in NonSecure */
@@ -158,24 +183,7 @@ void sp_min_early_platform_setup2(u_register_t arg0, u_register_t arg1,
 		panic();
 	}
 
-	result = dt_get_stdout_uart_info(&dt_uart_info);
-
-	if ((result > 0) && (dt_uart_info.status != 0U)) {
-		unsigned int console_flags;
-
-		if (console_stm32_register(dt_uart_info.base, 0,
-					   STM32MP_UART_BAUDRATE, &console) ==
-		    0) {
-			panic();
-		}
-
-		console_flags = CONSOLE_FLAG_BOOT | CONSOLE_FLAG_CRASH |
-			CONSOLE_FLAG_TRANSLATE_CRLF;
-#ifdef DEBUG
-		console_flags |= CONSOLE_FLAG_RUNTIME;
-#endif
-		console_set_scope(&console, console_flags);
-	}
+	setup_uart_console();
 
 	stm32mp1_etzpc_early_setup();
 }
-- 
GitLab