From: Suman Anna <s-anna@ti.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2 06/18] arm: mach-k3: sysfw-loader: Add support for rom loading sysfw image
Date: Mon, 27 Jul 2020 12:17:59 -0500 [thread overview]
Message-ID: <4b488be6-e2fc-6844-933e-186582231e1e@ti.com> (raw)
In-Reply-To: <20200727094543.28484-7-lokeshvutla@ti.com>
Hi Lokesh,
On 7/27/20 4:45 AM, Lokesh Vutla wrote:
> Starting J7200 SoC, ROM supports for loading sysfw directly from boot
> image. In such cases, SPL need not load sysfw from boot media, but need
> to receive boot notification message from sysfw. So separate out
> remoteproc calls for system controller from sysfw loader and just
> receive the boot notification if sysfw is already loaded.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> ---
> arch/arm/mach-k3/am6_init.c | 2 +-
> arch/arm/mach-k3/include/mach/sysfw-loader.h | 4 +-
> arch/arm/mach-k3/j721e_init.c | 2 +-
> arch/arm/mach-k3/sysfw-loader.c | 56 +++++++++++++-------
> 4 files changed, 43 insertions(+), 21 deletions(-)
>
> diff --git a/arch/arm/mach-k3/am6_init.c b/arch/arm/mach-k3/am6_init.c
> index abdec76d73..4250ac355b 100644
> --- a/arch/arm/mach-k3/am6_init.c
> +++ b/arch/arm/mach-k3/am6_init.c
> @@ -155,7 +155,7 @@ void board_init_f(ulong dummy)
> * Load, start up, and configure system controller firmware while
> * also populating the SYSFW post-PM configuration callback hook.
> */
> - k3_sysfw_loader(k3_mmc_stop_clock, k3_mmc_restart_clock);
> + k3_sysfw_loader(false, k3_mmc_stop_clock, k3_mmc_restart_clock);
>
> /* Prepare console output */
> preloader_console_init();
> diff --git a/arch/arm/mach-k3/include/mach/sysfw-loader.h b/arch/arm/mach-k3/include/mach/sysfw-loader.h
> index 6f5612b4fd..b23a9e821e 100644
> --- a/arch/arm/mach-k3/include/mach/sysfw-loader.h
> +++ b/arch/arm/mach-k3/include/mach/sysfw-loader.h
> @@ -7,6 +7,8 @@
> #ifndef _SYSFW_LOADER_H_
> #define _SYSFW_LOADER_H_
>
> -void k3_sysfw_loader(void (*config_pm_pre_callback)(void), void (*config_pm_done_callback)(void));
> +void k3_sysfw_loader(bool rom_loaded_sysfw,
> + void (*config_pm_pre_callback)(void),
> + void (*config_pm_done_callback)(void));
>
> #endif
> diff --git a/arch/arm/mach-k3/j721e_init.c b/arch/arm/mach-k3/j721e_init.c
> index 2010cab1d1..461a9d7f8f 100644
> --- a/arch/arm/mach-k3/j721e_init.c
> +++ b/arch/arm/mach-k3/j721e_init.c
> @@ -174,7 +174,7 @@ void board_init_f(ulong dummy)
> * callback hook, effectively switching on (or over) the console
> * output.
> */
> - k3_sysfw_loader(k3_mmc_stop_clock, k3_mmc_restart_clock);
> + k3_sysfw_loader(false, k3_mmc_stop_clock, k3_mmc_restart_clock);
Any reason why you want to add the new argument at the front, rather
than the end which is typical?
>
> /* Prepare console output */
> preloader_console_init();
> diff --git a/arch/arm/mach-k3/sysfw-loader.c b/arch/arm/mach-k3/sysfw-loader.c
> index 513be09c68..f62bfa995c 100644
> --- a/arch/arm/mach-k3/sysfw-loader.c
> +++ b/arch/arm/mach-k3/sysfw-loader.c
> @@ -32,6 +32,12 @@ DECLARE_GLOBAL_DATA_PTR;
> #define SYSFW_CFG_RM "rm-cfg.bin"
> #define SYSFW_CFG_SEC "sec-cfg.bin"
>
> +/*
> + * It is assumed that remoteproc device 0 is the corresponding
> + * system-controller that runs SYSFW. Make sure DT reflects the same.
> + */
> +#define K3_SYSTEM_CONTROLLER_RPROC_ID 0
> +
> static bool sysfw_loaded;
> static void *sysfw_load_address;
>
> @@ -71,6 +77,26 @@ static int fit_get_data_by_name(const void *fit, int images, const char *name,
> return fit_image_get_data(fit, node_offset, addr, size);
> }
>
> +static void k3_start_system_controller(int rproc_id, bool rproc_loaded,
> + ulong addr, ulong size)
Are you expecting the SYSTEM_CONTROLLER_RPROC_ID to be a different value
from 0? Do you really need the rproc_id argument, rather than directly
using it in code?
regards
Suman
> +{
> + int ret;
> +
> + ret = rproc_dev_init(rproc_id);
> + if (ret)
> + panic("rproc failed to be initialized (%d)\n", ret);
> +
> + if (!rproc_loaded) {
> + ret = rproc_load(rproc_id, addr, size);
> + if (ret)
> + panic("Firmware failed to start on rproc (%d)\n", ret);
> + }
> +
> + ret = rproc_start(0);
> + if (ret)
> + panic("Firmware init failed on rproc (%d)\n", ret);
> +}
> +
> static void k3_sysfw_load_using_fit(void *fit)
> {
> int images;
> @@ -90,23 +116,9 @@ static void k3_sysfw_load_using_fit(void *fit)
> panic("Error accessing %s node in FIT (%d)\n", SYSFW_FIRMWARE,
> ret);
>
> - /*
> - * Start up system controller firmware
> - *
> - * It is assumed that remoteproc device 0 is the corresponding
> - * system-controller that runs SYSFW. Make sure DT reflects the same.
> - */
> - ret = rproc_dev_init(0);
> - if (ret)
> - panic("rproc failed to be initialized (%d)\n", ret);
> -
> - ret = rproc_load(0, (ulong)sysfw_addr, (ulong)sysfw_size);
> - if (ret)
> - panic("Firmware failed to start on rproc (%d)\n", ret);
> -
> - ret = rproc_start(0);
> - if (ret)
> - panic("Firmware init failed on rproc (%d)\n", ret);
> + /* Start up system controller firmware */
> + k3_start_system_controller(K3_SYSTEM_CONTROLLER_RPROC_ID, false,
> + (ulong)sysfw_addr, (ulong)sysfw_size);
> }
>
> static void k3_sysfw_configure_using_fit(void *fit,
> @@ -222,7 +234,8 @@ static void *k3_sysfw_get_spi_addr(void)
> }
> #endif
>
> -void k3_sysfw_loader(void (*config_pm_pre_callback) (void),
> +void k3_sysfw_loader(bool rom_loaded_sysfw,
> + void (*config_pm_pre_callback)(void),
> void (*config_pm_done_callback)(void))
> {
> struct spl_image_info spl_image = { 0 };
> @@ -230,6 +243,13 @@ void k3_sysfw_loader(void (*config_pm_pre_callback) (void),
> struct ti_sci_handle *ti_sci;
> int ret = 0;
>
> + if (rom_loaded_sysfw) {
> + k3_start_system_controller(K3_SYSTEM_CONTROLLER_RPROC_ID,
> + rom_loaded_sysfw, 0, 0);
> + sysfw_loaded = true;
> + return;
> + }
> +
> /* Reserve a block of aligned memory for loading the SYSFW image */
> sysfw_load_address = memalign(ARCH_DMA_MINALIGN,
> CONFIG_K3_SYSFW_IMAGE_SIZE_MAX);
>
next prev parent reply other threads:[~2020-07-27 17:17 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-27 9:45 [PATCH v2 00/18] arm: mach-k3: Initial support for Texas Instrument's J7200 Platform Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 01/18] board: ti: board_detect: Add stub functions for EEPROM detection apis Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 02/18] board: ti: j721e: Probe eeprom only when CONFIG_TI_I2C_BOARD_DETECT is defined Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 03/18] board: ti: j721e: Update fdt fixup logic for interconnect nodes Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 04/18] arm: mach-k3: Fix platform hang when SPL_MULTI_DTB_FIT is not enabled Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 05/18] arm: mach-k3: Move mmr_unlock to a common location Lokesh Vutla
2020-07-27 17:12 ` Suman Anna
2020-07-27 9:45 ` [PATCH v2 06/18] arm: mach-k3: sysfw-loader: Add support for rom loading sysfw image Lokesh Vutla
2020-07-27 17:17 ` Suman Anna [this message]
2020-07-29 2:35 ` Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 07/18] arm: mach-k3: j721e: Add detection for j721e Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 08/18] arm: mach-k3: j721e: Fix unlocking control module registers Lokesh Vutla
2020-07-27 17:19 ` Suman Anna
2020-07-27 9:45 ` [PATCH v2 09/18] arm: mach-k3: j7200: Add support for SOC detection Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 10/18] arm: mach-k3: j7200: Add support for storing extended boot info from ROM Lokesh Vutla
2020-07-27 17:34 ` Suman Anna
2020-07-27 9:45 ` [PATCH v2 11/18] arm: mach-k3: j7200: Detect if ROM has already loaded sysfw Lokesh Vutla
2020-07-27 17:36 ` Suman Anna
2020-07-27 9:45 ` [PATCH v2 12/18] board: ti: j7200: Introduce support for j7200 build targets Lokesh Vutla
2020-08-05 8:50 ` Vignesh Raghavendra
2020-08-05 14:00 ` Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 13/18] board: ti: j7200: Add board detection support for j7200 Lokesh Vutla
2020-07-27 17:38 ` Suman Anna
2020-07-27 9:45 ` [PATCH v2 14/18] ram: k3-j721e: Relax version checks for memory controller Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 15/18] arm: dts: k3-j7200: Add dts support Lokesh Vutla
2020-08-04 14:11 ` Vignesh Raghavendra
2020-07-27 9:45 ` [PATCH v2 16/18] arm: dts: k3-j7200: Add R5 specific " Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 17/18] configs: j7200_evm_r5: Add initial support Lokesh Vutla
2020-07-27 9:45 ` [PATCH v2 18/18] configs: j7200_evm_a72: Add Initial support Lokesh Vutla
2020-08-04 15:25 ` Vignesh Raghavendra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4b488be6-e2fc-6844-933e-186582231e1e@ti.com \
--to=s-anna@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox