[PATCH 1/4] ARM: imx: Add bmode support for iMX7

Stefano Babic sbabic at denx.de
Wed Aug 5 15:59:54 CEST 2020


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 <marex at denx.de>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: NXP i.MX U-Boot Team <uboot-imx at nxp.com>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Stefano Babic <sbabic at 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: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list