Add a separate function for printing sysfw version so that it can be
called independently of k3_sysfw_loader.

Signed-off-by: Lokesh Vutla <lokeshvu...@ti.com>
Signed-off-by: Vignesh Raghavendra <vigne...@ti.com>
---
 arch/arm/mach-k3/am6_init.c     |  9 +++++----
 arch/arm/mach-k3/common.c       | 22 ++++++++++++++++++++++
 arch/arm/mach-k3/common.h       |  1 +
 arch/arm/mach-k3/j721e_init.c   |  3 +++
 arch/arm/mach-k3/sysfw-loader.c | 18 ------------------
 5 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/arch/arm/mach-k3/am6_init.c b/arch/arm/mach-k3/am6_init.c
index 63cd7e0458..0f739818f6 100644
--- a/arch/arm/mach-k3/am6_init.c
+++ b/arch/arm/mach-k3/am6_init.c
@@ -133,10 +133,8 @@ void board_init_f(ulong dummy)
                pinctrl_select_state(dev, "default");
 
        /*
-        * Load, start up, and configure system controller firmware. Provide
-        * the U-Boot console init function to the SYSFW post-PM configuration
-        * callback hook, effectively switching on (or over) the console
-        * output.
+        * Load, start up, and configure system controller firmware while
+        * also populating the SYSFW post-PM configuration callback hook.
         */
        k3_sysfw_loader(preloader_console_init);
 
@@ -150,6 +148,9 @@ void board_init_f(ulong dummy)
        preloader_console_init();
 #endif
 
+       /* Output System Firmware version info */
+       k3_sysfw_print_ver();
+
        /* Perform EEPROM-based board detection */
        do_board_detect();
 
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index 7af60a7f2f..163fa108ef 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -31,6 +31,28 @@ struct ti_sci_handle *get_ti_sci_handle(void)
        return (struct ti_sci_handle *)ti_sci_get_handle_from_sysfw(dev);
 }
 
+void k3_sysfw_print_ver(void)
+{
+       struct ti_sci_handle *ti_sci = get_ti_sci_handle();
+       char fw_desc[sizeof(ti_sci->version.firmware_description) + 1];
+
+       /*
+        * Output System Firmware version info. Note that since the
+        * 'firmware_description' field is not guaranteed to be zero-
+        * terminated we manually add a \0 terminator if needed. Further
+        * note that we intentionally no longer rely on the extended
+        * printf() formatter '%.*s' to not having to require a more
+        * full-featured printf() implementation.
+        */
+       strncpy(fw_desc, ti_sci->version.firmware_description,
+               sizeof(ti_sci->version.firmware_description));
+       fw_desc[sizeof(fw_desc) - 1] = '\0';
+
+       printf("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n",
+              ti_sci->version.abi_major, ti_sci->version.abi_minor,
+              ti_sci->version.firmware_revision, fw_desc);
+}
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_K3_EARLY_CONS
diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h
index d8b34fe060..7098c298c4 100644
--- a/arch/arm/mach-k3/common.h
+++ b/arch/arm/mach-k3/common.h
@@ -24,3 +24,4 @@ void setup_k3_mpu_regions(void);
 int early_console_init(void);
 void disable_linefill_optimization(void);
 void remove_fwl_configs(struct fwl_data *fwl_data, size_t fwl_data_size);
+void k3_sysfw_print_ver(void);
diff --git a/arch/arm/mach-k3/j721e_init.c b/arch/arm/mach-k3/j721e_init.c
index f7f7398081..d75e3a35ea 100644
--- a/arch/arm/mach-k3/j721e_init.c
+++ b/arch/arm/mach-k3/j721e_init.c
@@ -171,6 +171,9 @@ void board_init_f(ulong dummy)
        preloader_console_init();
 #endif
 
+       /* Output System Firmware version info */
+       k3_sysfw_print_ver();
+
        /* Perform EEPROM-based board detection */
        do_board_detect();
 
diff --git a/arch/arm/mach-k3/sysfw-loader.c b/arch/arm/mach-k3/sysfw-loader.c
index 94dbeb9437..c5e011dc56 100644
--- a/arch/arm/mach-k3/sysfw-loader.c
+++ b/arch/arm/mach-k3/sysfw-loader.c
@@ -301,22 +301,4 @@ void k3_sysfw_loader(void (*config_pm_done_callback)(void))
         */
        if (config_pm_done_callback)
                config_pm_done_callback();
-
-       /*
-        * Output System Firmware version info. Note that since the
-        * 'firmware_description' field is not guaranteed to be zero-
-        * terminated we manually add a \0 terminator if needed. Further
-        * note that we intentionally no longer rely on the extended
-        * printf() formatter '%.*s' to not having to require a more
-        * full-featured printf() implementation.
-        */
-       char fw_desc[sizeof(ti_sci->version.firmware_description) + 1];
-
-       strncpy(fw_desc, ti_sci->version.firmware_description,
-               sizeof(ti_sci->version.firmware_description));
-       fw_desc[sizeof(fw_desc) - 1] = '\0';
-
-       printf("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n",
-              ti_sci->version.abi_major, ti_sci->version.abi_minor,
-              ti_sci->version.firmware_revision, fw_desc);
 }
-- 
2.23.0

Reply via email to