arm: mach-k3: Add a separate function for printing sysfw version
authorLokesh Vutla <lokeshvutla@ti.com>
Tue, 10 Mar 2020 11:20:58 +0000 (16:50 +0530)
committerLokesh Vutla <lokeshvutla@ti.com>
Wed, 11 Mar 2020 03:26:49 +0000 (08:56 +0530)
Add a separate function for printing sysfw version so that it can be
called independently of k3_sysfw_loader.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
arch/arm/mach-k3/am6_init.c
arch/arm/mach-k3/common.c
arch/arm/mach-k3/common.h
arch/arm/mach-k3/j721e_init.c
arch/arm/mach-k3/sysfw-loader.c

index 63cd7e04589772fbbaffdc785b35e5ecb593e541..0f739818f6493fe19462cdd6f8a9c91ed790aa15 100644 (file)
@@ -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();
 
index b2d25edc7e1c77acf4478c3722a2220fff34f2bb..efd84ec7eb9786b75e33239a37273c5b1a00020d 100644 (file)
@@ -35,6 +35,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
index 42fb8ee6e737638292d14ad260a8dab11f0fb318..b1cbe116ef3133ca61444eed464b9849d2e4bfe5 100644 (file)
@@ -26,3 +26,4 @@ void disable_linefill_optimization(void);
 void remove_fwl_configs(struct fwl_data *fwl_data, size_t fwl_data_size);
 void start_non_linux_remote_cores(void);
 int load_firmware(char *name_fw, char *name_loadaddr, u32 *loadaddr);
+void k3_sysfw_print_ver(void);
index 13f3791823f13a8af5ef1f9644e20223c3d37a46..511cfd2fab0f4732210111a4e2b528d987f08ad0 100644 (file)
@@ -172,6 +172,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();
 
index 3677a37f55a2d86f34259f25db61098acc3a1e4f..02294914934fd93d436f2570a2af6f674a57504f 100644 (file)
@@ -330,22 +330,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);
 }