Hi Marek,

On 05.08.20 15:34, Marek Vasut wrote:
> Add the basic differentiation between i.MX6 and i.MX7 into the bmode
> command, the mechanism really works almost the same on both platforms.
> 
> Signed-off-by: Marek Vasut <ma...@denx.de>
> Cc: Fabio Estevam <feste...@gmail.com>
> Cc: NXP i.MX U-Boot Team <uboot-...@nxp.com>
> Cc: Peng Fan <peng....@nxp.com>
> Cc: Stefano Babic <sba...@denx.de>
> ---
>  arch/arm/include/asm/mach-imx/sys_proto.h |  6 +++++-
>  arch/arm/mach-imx/Kconfig                 |  2 +-
>  arch/arm/mach-imx/init.c                  | 12 +++++++++---
>  arch/arm/mach-imx/mx7/soc.c               |  8 ++++++++
>  4 files changed, 23 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h 
> b/arch/arm/include/asm/mach-imx/sys_proto.h
> index ab94024c9b..2d18b1f56b 100644
> --- a/arch/arm/include/asm/mach-imx/sys_proto.h
> +++ b/arch/arm/include/asm/mach-imx/sys_proto.h
> @@ -78,7 +78,7 @@ struct bd_info;
>  #define is_imx8qxp() (is_cpu_type(MXC_CPU_IMX8QXP))
>  
>  #ifdef CONFIG_MX6
> -#define IMX6_SRC_GPR10_BMODE         BIT(28)
> +#define IMX6_SRC_GPR10_BMODE                 BIT(28)
>  
>  #define IMX6_BMODE_MASK                      GENMASK(7, 0)
>  #define      IMX6_BMODE_SHIFT                4
> @@ -126,6 +126,10 @@ void gpr_init(void);
>  
>  #endif /* CONFIG_MX6 */
>  
> +#ifdef CONFIG_MX7
> +#define IMX7_SRC_GPR10_BMODE                 BIT(28)
> +#endif
> +

It is questionable why we need two different defines, that also have
exactly the same definition. Do we really need to differentiate and to
use #ifdef ?

>  /* address translation table */
>  struct rproc_att {
>       u32 da; /* device address (From Cortex M4 view) */
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index 1531d09f3b..8f64e23195 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -62,7 +62,7 @@ config CSF_SIZE
>  config CMD_BMODE
>       bool "Support the 'bmode' command"
>       default y
> -     depends on ARCH_MX6 || ARCH_MX5
> +     depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5
>       help
>         This enables the 'bmode' (bootmode) command for forcing
>         a boot from specific media.
> diff --git a/arch/arm/mach-imx/init.c b/arch/arm/mach-imx/init.c
> index 693b724429..e30d63b896 100644
> --- a/arch/arm/mach-imx/init.c
> +++ b/arch/arm/mach-imx/init.c
> @@ -103,14 +103,20 @@ void init_src(void)
>  #ifdef CONFIG_CMD_BMODE
>  void boot_mode_apply(unsigned cfg_val)
>  {
> -     unsigned reg;
> +#ifdef CONFIG_MX6
> +     const u32 bmode = IMX6_SRC_GPR10_BMODE;
> +#elif CONFIG_MX7
> +     const u32 bmode = IMX7_SRC_GPR10_BMODE;
> +#endif

Ditto.

>       struct src *psrc = (struct src *)SRC_BASE_ADDR;
> +     unsigned reg;
> +
>       writel(cfg_val, &psrc->gpr9);
>       reg = readl(&psrc->gpr10);
>       if (cfg_val)
> -             reg |= IMX6_SRC_GPR10_BMODE;
> +             reg |= bmode;
>       else
> -             reg &= ~IMX6_SRC_GPR10_BMODE;
> +             reg &= ~bmode;
>       writel(reg, &psrc->gpr10);
>  }
>  #endif
> diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c
> index 8db672fb05..2698ae623e 100644
> --- a/arch/arm/mach-imx/mx7/soc.c
> +++ b/arch/arm/mach-imx/mx7/soc.c
> @@ -13,6 +13,7 @@
>  #include <asm/mach-imx/hab.h>
>  #include <asm/mach-imx/rdc-sema.h>
>  #include <asm/arch/imx-rdc.h>
> +#include <asm/mach-imx/boot_mode.h>
>  #include <asm/arch/crm_regs.h>
>  #include <dm.h>
>  #include <env.h>
> @@ -411,6 +412,13 @@ void s_init(void)
>       return;
>  }
>  
> +#ifndef CONFIG_SPL_BUILD
> +const struct boot_mode soc_boot_modes[] = {
> +     {"normal",      MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
> +     {NULL,          0},
> +};
> +#endif
> +
>  void reset_misc(void)
>  {
>  #ifndef CONFIG_SPL_BUILD
> 

Regards,
Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=====================================================================

Reply via email to