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 =====================================================================