diff mbox series

[U-Boot,4/7] arm: K3: sysfw-loader: Allow loading SYSFW via Y-Modem

Message ID 20190815205532.16545-5-dannenberg@ti.com
State Accepted
Commit 921b325854dbd198afd994be886095e94d2d4689
Delegated to: Tom Rini
Headers show
Series Implement UART-based boot of TI K3 AM65x SoCs | expand

Commit Message

Andreas Dannenberg Aug. 15, 2019, 8:55 p.m. UTC
In order to allow booting TI K3 family SoCs via Y-Modem add support for
loading System Firmware by tapping into the associated SPL core loader
function.

In this context also make sure a console is available and if not go
ahead and activate the early console feature which allows bringing up
an alternate full console before the main console is activated. Such
an alternate console is typically setup in a way that the associated
UART can be fully initialized prior to SYSFW services being available.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
---
 arch/arm/mach-k3/sysfw-loader.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

Comments

Tom Rini Oct. 12, 2019, 8:23 p.m. UTC | #1
On Thu, Aug 15, 2019 at 03:55:29PM -0500, Andreas Dannenberg wrote:

> In order to allow booting TI K3 family SoCs via Y-Modem add support for
> loading System Firmware by tapping into the associated SPL core loader
> function.
> 
> In this context also make sure a console is available and if not go
> ahead and activate the early console feature which allows bringing up
> an alternate full console before the main console is activated. Such
> an alternate console is typically setup in a way that the associated
> UART can be fully initialized prior to SYSFW services being available.
> 
> Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/arch/arm/mach-k3/sysfw-loader.c b/arch/arm/mach-k3/sysfw-loader.c
index 7a482bdc8a..5903bbe12a 100644
--- a/arch/arm/mach-k3/sysfw-loader.c
+++ b/arch/arm/mach-k3/sysfw-loader.c
@@ -12,6 +12,9 @@ 
 #include <remoteproc.h>
 #include <linux/soc/ti/ti_sci_protocol.h>
 #include <asm/arch/sys_proto.h>
+#include "common.h"
+
+DECLARE_GLOBAL_DATA_PTR;
 
 /* Name of the FIT image nodes for SYSFW and its config data */
 #define SYSFW_FIRMWARE			"sysfw.bin"
@@ -214,6 +217,24 @@  void k3_sysfw_loader(void (*config_pm_done_callback)(void))
 				   0);
 #endif
 		break;
+#endif
+#if CONFIG_IS_ENABLED(YMODEM_SUPPORT)
+	case BOOT_DEVICE_UART:
+#ifdef CONFIG_K3_EARLY_CONS
+		/*
+		 * Establish a serial console if not yet available as required
+		 * for UART-based boot. For this use the early console feature
+		 * that allows setting up a UART for use before SYSFW has been
+		 * brought up. Note that the associated UART module's clocks
+		 * must have gotten enabled by the ROM bootcode which will be
+		 * the case when continuing to boot serially from the same
+		 * UART that the ROM loaded the initial bootloader from.
+		 */
+		if (!gd->have_console)
+			early_console_init();
+#endif
+		ret = spl_ymodem_load_image(&spl_image, &bootdev);
+		break;
 #endif
 	default:
 		panic("Loading SYSFW image from device %u not supported!\n",