diff mbox series

[U-Boot] spl: pass args to board_return_to_bootrom

Message ID 20190807065627.9601-1-peng.fan@nxp.com
State Accepted
Commit cda789a5b1c049bfc3592dfbba19d261c2c0c6c4
Delegated to: Tom Rini
Headers show
Series [U-Boot] spl: pass args to board_return_to_bootrom | expand

Commit Message

Peng Fan Aug. 7, 2019, 6:40 a.m. UTC
Pass spl_image and bootdev to board_return_bootrom.
i.MX8MN needs the args to let ROM to load images

Cc: Simon Glass <sjg@chromium.org>
Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Cc: Kever Yang <kever.yang@rock-chips.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---

This is to prepare i.MX8MM ROMAPI support, and
This is an updated version for https://patchwork.ozlabs.org/patch/1128834/,
because there are changes in rockchip spl/tpl.

Kever, Philipp
 Please help review again. Thanks.

 arch/arm/cpu/arm926ejs/spear/spl.c | 5 ++++-
 arch/arm/mach-rockchip/spl.c       | 5 ++++-
 arch/arm/mach-rockchip/tpl.c       | 5 ++++-
 common/spl/spl_bootrom.c           | 7 ++++---
 include/spl.h                      | 3 ++-
 5 files changed, 18 insertions(+), 7 deletions(-)

Comments

Kever Yang Aug. 8, 2019, 2:17 a.m. UTC | #1
On 2019/8/7 下午2:40, Peng Fan wrote:
> Pass spl_image and bootdev to board_return_bootrom.
> i.MX8MN needs the args to let ROM to load images
>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> Cc: Kever Yang <kever.yang@rock-chips.com>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>


Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
>
> This is to prepare i.MX8MM ROMAPI support, and
> This is an updated version for https://patchwork.ozlabs.org/patch/1128834/,
> because there are changes in rockchip spl/tpl.
>
> Kever, Philipp
>   Please help review again. Thanks.
>
>   arch/arm/cpu/arm926ejs/spear/spl.c | 5 ++++-
>   arch/arm/mach-rockchip/spl.c       | 5 ++++-
>   arch/arm/mach-rockchip/tpl.c       | 5 ++++-
>   common/spl/spl_bootrom.c           | 7 ++++---
>   include/spl.h                      | 3 ++-
>   5 files changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/spear/spl.c b/arch/arm/cpu/arm926ejs/spear/spl.c
> index fc332fb626..a919a455eb 100644
> --- a/arch/arm/cpu/arm926ejs/spear/spl.c
> +++ b/arch/arm/cpu/arm926ejs/spear/spl.c
> @@ -277,7 +277,8 @@ void board_init_f(ulong dummy)
>    * BootROM code right after having initialized a few components like the DRAM).
>    * The following function is called from SPL common code (board_init_r).
>    */
> -void board_return_to_bootrom(void)
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> +			    struct spl_boot_device *bootdev)
>   {
>   	/*
>   	 * Retrieve the BootROM's stack pointer and jump back to the start of
> @@ -294,4 +295,6 @@ void board_return_to_bootrom(void)
>   		      "bl back_to_bootrom;"
>   #endif
>   		      );
> +
> +	return 0;
>   }
> diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
> index 33137cc5ef..92102b39e7 100644
> --- a/arch/arm/mach-rockchip/spl.c
> +++ b/arch/arm/mach-rockchip/spl.c
> @@ -14,9 +14,12 @@
>   
>   DECLARE_GLOBAL_DATA_PTR;
>   
> -void board_return_to_bootrom(void)
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> +			    struct spl_boot_device *bootdev)
>   {
>   	back_to_bootrom(BROM_BOOT_NEXTSTAGE);
> +
> +	return 0;
>   }
>   
>   __weak const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
> diff --git a/arch/arm/mach-rockchip/tpl.c b/arch/arm/mach-rockchip/tpl.c
> index 55f6e922d0..c3734cb070 100644
> --- a/arch/arm/mach-rockchip/tpl.c
> +++ b/arch/arm/mach-rockchip/tpl.c
> @@ -77,9 +77,12 @@ void board_init_f(ulong dummy)
>   	}
>   }
>   
> -void board_return_to_bootrom(void)
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> +			    struct spl_boot_device *bootdev)
>   {
>   	back_to_bootrom(BROM_BOOT_NEXTSTAGE);
> +
> +	return 0;
>   }
>   
>   u32 spl_boot_device(void)
> diff --git a/common/spl/spl_bootrom.c b/common/spl/spl_bootrom.c
> index 076f5d8d93..0eefd39a51 100644
> --- a/common/spl/spl_bootrom.c
> +++ b/common/spl/spl_bootrom.c
> @@ -6,8 +6,10 @@
>   #include <common.h>
>   #include <spl.h>
>   
> -__weak void board_return_to_bootrom(void)
> +__weak int board_return_to_bootrom(struct spl_image_info *spl_image,
> +				   struct spl_boot_device *bootdev)
>   {
> +	return 0;
>   }
>   
>   static int spl_return_to_bootrom(struct spl_image_info *spl_image,
> @@ -19,8 +21,7 @@ static int spl_return_to_bootrom(struct spl_image_info *spl_image,
>   	 * the ROM), it will implement board_return_to_bootrom() and
>   	 * should not return from it.
>   	 */
> -	board_return_to_bootrom();
> -	return false;
> +	return board_return_to_bootrom(spl_image, bootdev);
>   }
>   
>   SPL_LOAD_IMAGE_METHOD("BOOTROM", 0, BOOT_DEVICE_BOOTROM, spl_return_to_bootrom);
> diff --git a/include/spl.h b/include/spl.h
> index a90f971a23..f4a5461b4e 100644
> --- a/include/spl.h
> +++ b/include/spl.h
> @@ -382,7 +382,8 @@ void spl_optee_entry(void *arg0, void *arg1, void *arg2, void *arg3);
>    * stage wants to return to the ROM code to continue booting, boards
>    * can implement 'board_return_to_bootrom'.
>    */
> -void board_return_to_bootrom(void);
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> +			    struct spl_boot_device *bootdev);
>   
>   /**
>    * board_spl_fit_post_load - allow process images after loading finished
Peng Fan Aug. 13, 2019, 8:29 a.m. UTC | #2
> Subject: [PATCH] spl: pass args to board_return_to_bootrom
> 
> Pass spl_image and bootdev to board_return_bootrom.
> i.MX8MN needs the args to let ROM to load images
> 
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
> Cc: Kever Yang <kever.yang@rock-chips.com>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---

Applied to nxp-imx-8-13, with Kever's tag applied.
https://github.com/MrVan/u-boot/tree/nxp-imx-8-13

Regards,
Peng.
diff mbox series

Patch

diff --git a/arch/arm/cpu/arm926ejs/spear/spl.c b/arch/arm/cpu/arm926ejs/spear/spl.c
index fc332fb626..a919a455eb 100644
--- a/arch/arm/cpu/arm926ejs/spear/spl.c
+++ b/arch/arm/cpu/arm926ejs/spear/spl.c
@@ -277,7 +277,8 @@  void board_init_f(ulong dummy)
  * BootROM code right after having initialized a few components like the DRAM).
  * The following function is called from SPL common code (board_init_r).
  */
-void board_return_to_bootrom(void)
+int board_return_to_bootrom(struct spl_image_info *spl_image,
+			    struct spl_boot_device *bootdev)
 {
 	/*
 	 * Retrieve the BootROM's stack pointer and jump back to the start of
@@ -294,4 +295,6 @@  void board_return_to_bootrom(void)
 		      "bl back_to_bootrom;"
 #endif
 		      );
+
+	return 0;
 }
diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
index 33137cc5ef..92102b39e7 100644
--- a/arch/arm/mach-rockchip/spl.c
+++ b/arch/arm/mach-rockchip/spl.c
@@ -14,9 +14,12 @@ 
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void board_return_to_bootrom(void)
+int board_return_to_bootrom(struct spl_image_info *spl_image,
+			    struct spl_boot_device *bootdev)
 {
 	back_to_bootrom(BROM_BOOT_NEXTSTAGE);
+
+	return 0;
 }
 
 __weak const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
diff --git a/arch/arm/mach-rockchip/tpl.c b/arch/arm/mach-rockchip/tpl.c
index 55f6e922d0..c3734cb070 100644
--- a/arch/arm/mach-rockchip/tpl.c
+++ b/arch/arm/mach-rockchip/tpl.c
@@ -77,9 +77,12 @@  void board_init_f(ulong dummy)
 	}
 }
 
-void board_return_to_bootrom(void)
+int board_return_to_bootrom(struct spl_image_info *spl_image,
+			    struct spl_boot_device *bootdev)
 {
 	back_to_bootrom(BROM_BOOT_NEXTSTAGE);
+
+	return 0;
 }
 
 u32 spl_boot_device(void)
diff --git a/common/spl/spl_bootrom.c b/common/spl/spl_bootrom.c
index 076f5d8d93..0eefd39a51 100644
--- a/common/spl/spl_bootrom.c
+++ b/common/spl/spl_bootrom.c
@@ -6,8 +6,10 @@ 
 #include <common.h>
 #include <spl.h>
 
-__weak void board_return_to_bootrom(void)
+__weak int board_return_to_bootrom(struct spl_image_info *spl_image,
+				   struct spl_boot_device *bootdev)
 {
+	return 0;
 }
 
 static int spl_return_to_bootrom(struct spl_image_info *spl_image,
@@ -19,8 +21,7 @@  static int spl_return_to_bootrom(struct spl_image_info *spl_image,
 	 * the ROM), it will implement board_return_to_bootrom() and
 	 * should not return from it.
 	 */
-	board_return_to_bootrom();
-	return false;
+	return board_return_to_bootrom(spl_image, bootdev);
 }
 
 SPL_LOAD_IMAGE_METHOD("BOOTROM", 0, BOOT_DEVICE_BOOTROM, spl_return_to_bootrom);
diff --git a/include/spl.h b/include/spl.h
index a90f971a23..f4a5461b4e 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -382,7 +382,8 @@  void spl_optee_entry(void *arg0, void *arg1, void *arg2, void *arg3);
  * stage wants to return to the ROM code to continue booting, boards
  * can implement 'board_return_to_bootrom'.
  */
-void board_return_to_bootrom(void);
+int board_return_to_bootrom(struct spl_image_info *spl_image,
+			    struct spl_boot_device *bootdev);
 
 /**
  * board_spl_fit_post_load - allow process images after loading finished