[PATCH v2 11/12] arm: mach-k3: Move J721s2 SPL init functions to mach-k3

Christian Gmeiner christian.gmeiner at gmail.com
Thu Apr 6 11:22:06 CEST 2023


>
> This matches AM64 and J721e and removes the need to forward
> declare k3_spl_init(), k3_mem_init(), and check_rom_loaded_sysfw()
> in sys_proto.h.
>
> Signed-off-by: Andrew Davis <afd at ti.com>

Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>

> ---
>  arch/arm/mach-k3/include/mach/sys_proto.h |  3 --
>  arch/arm/mach-k3/j721s2_init.c            | 64 +++++++++++++++++++++++
>  board/ti/j721s2/evm.c                     | 63 ----------------------
>  3 files changed, 64 insertions(+), 66 deletions(-)
>
> diff --git a/arch/arm/mach-k3/include/mach/sys_proto.h b/arch/arm/mach-k3/include/mach/sys_proto.h
> index 4b4e2a5be39..5638c6f8c8a 100644
> --- a/arch/arm/mach-k3/include/mach/sys_proto.h
> +++ b/arch/arm/mach-k3/include/mach/sys_proto.h
> @@ -7,7 +7,4 @@
>  #ifndef _SYS_PROTO_H_
>  #define _SYS_PROTO_H_
>
> -void k3_spl_init(void);
> -void k3_mem_init(void);
> -bool check_rom_loaded_sysfw(void);
>  #endif
> diff --git a/arch/arm/mach-k3/j721s2_init.c b/arch/arm/mach-k3/j721s2_init.c
> index 4785a747bf3..175ac4028a0 100644
> --- a/arch/arm/mach-k3/j721s2_init.c
> +++ b/arch/arm/mach-k3/j721s2_init.c
> @@ -19,6 +19,7 @@
>  #include <dm.h>
>  #include <dm/uclass-internal.h>
>  #include <dm/pinctrl.h>
> +#include <dm/root.h>
>  #include <mmc.h>
>  #include <remoteproc.h>
>
> @@ -182,6 +183,69 @@ void k3_mem_init(void)
>         spl_enable_dcache();
>  }
>
> +/* Support for the various EVM / SK families */
> +#if defined(CONFIG_SPL_OF_LIST) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> +void do_dt_magic(void)
> +{
> +       int ret, rescan, mmc_dev = -1;
> +       static struct mmc *mmc;
> +
> +       do_board_detect();
> +
> +       /*
> +        * Board detection has been done.
> +        * Let us see if another dtb wouldn't be a better match
> +        * for our board
> +        */
> +       if (IS_ENABLED(CONFIG_CPU_V7R)) {
> +               ret = fdtdec_resetup(&rescan);
> +               if (!ret && rescan) {
> +                       dm_uninit();
> +                       dm_init_and_scan(true);
> +               }
> +       }
> +
> +       /*
> +        * Because of multi DTB configuration, the MMC device has
> +        * to be re-initialized after reconfiguring FDT inorder to
> +        * boot from MMC. Do this when boot mode is MMC and ROM has
> +        * not loaded SYSFW.
> +        */
> +       switch (spl_boot_device()) {
> +       case BOOT_DEVICE_MMC1:
> +               mmc_dev = 0;
> +               break;
> +       case BOOT_DEVICE_MMC2:
> +       case BOOT_DEVICE_MMC2_2:
> +               mmc_dev = 1;
> +               break;
> +       }
> +
> +       if (mmc_dev > 0 && !check_rom_loaded_sysfw()) {
> +               ret = mmc_init_device(mmc_dev);
> +               if (!ret) {
> +                       mmc = find_mmc_device(mmc_dev);
> +                       if (mmc) {
> +                               ret = mmc_init(mmc);
> +                               if (ret)
> +                                       printf("mmc init failed with error: %d\n", ret);
> +                       }
> +               }
> +       }
> +}
> +#endif
> +
> +#ifdef CONFIG_SPL_BUILD
> +void board_init_f(ulong dummy)
> +{
> +       k3_spl_init();
> +#if defined(CONFIG_SPL_OF_LIST) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> +       do_dt_magic();
> +#endif
> +       k3_mem_init();
> +}
> +#endif
> +
>  u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
>  {
>         switch (boot_device) {
> diff --git a/board/ti/j721s2/evm.c b/board/ti/j721s2/evm.c
> index 9b130c141ac..d3f9a655899 100644
> --- a/board/ti/j721s2/evm.c
> +++ b/board/ti/j721s2/evm.c
> @@ -192,66 +192,3 @@ int board_late_init(void)
>  void spl_board_init(void)
>  {
>  }
> -
> -/* Support for the various EVM / SK families */
> -#if defined(CONFIG_SPL_OF_LIST) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> -void do_dt_magic(void)
> -{
> -       int ret, rescan, mmc_dev = -1;
> -       static struct mmc *mmc;
> -
> -       do_board_detect();
> -
> -       /*
> -        * Board detection has been done.
> -        * Let us see if another dtb wouldn't be a better match
> -        * for our board
> -        */
> -       if (IS_ENABLED(CONFIG_CPU_V7R)) {
> -               ret = fdtdec_resetup(&rescan);
> -               if (!ret && rescan) {
> -                       dm_uninit();
> -                       dm_init_and_scan(true);
> -               }
> -       }
> -
> -       /*
> -        * Because of multi DTB configuration, the MMC device has
> -        * to be re-initialized after reconfiguring FDT inorder to
> -        * boot from MMC. Do this when boot mode is MMC and ROM has
> -        * not loaded SYSFW.
> -        */
> -       switch (spl_boot_device()) {
> -       case BOOT_DEVICE_MMC1:
> -               mmc_dev = 0;
> -               break;
> -       case BOOT_DEVICE_MMC2:
> -       case BOOT_DEVICE_MMC2_2:
> -               mmc_dev = 1;
> -               break;
> -       }
> -
> -       if (mmc_dev > 0 && !check_rom_loaded_sysfw()) {
> -               ret = mmc_init_device(mmc_dev);
> -               if (!ret) {
> -                       mmc = find_mmc_device(mmc_dev);
> -                       if (mmc) {
> -                               ret = mmc_init(mmc);
> -                               if (ret)
> -                                       printf("mmc init failed with error: %d\n", ret);
> -                       }
> -               }
> -       }
> -}
> -#endif
> -
> -#ifdef CONFIG_SPL_BUILD
> -void board_init_f(ulong dummy)
> -{
> -       k3_spl_init();
> -#if defined(CONFIG_SPL_OF_LIST) && defined(CONFIG_TI_I2C_BOARD_DETECT)
> -       do_dt_magic();
> -#endif
> -       k3_mem_init();
> -}
> -#endif
> --
> 2.39.2
>


-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info/privacypolicy


More information about the U-Boot mailing list