ARM: imx: Add bmode support for iMX7
[platform/kernel/u-boot.git] / arch / arm / mach-imx / init.c
index b8d8d12..e30d63b 100644 (file)
@@ -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
        struct src *psrc = (struct src *)SRC_BASE_ADDR;
+       unsigned reg;
+
        writel(cfg_val, &psrc->gpr9);
        reg = readl(&psrc->gpr10);
        if (cfg_val)
-               reg |= 1 << 28;
+               reg |= bmode;
        else
-               reg &= ~(1 << 28);
+               reg &= ~bmode;
        writel(reg, &psrc->gpr10);
 }
 #endif
@@ -118,7 +124,7 @@ void boot_mode_apply(unsigned cfg_val)
 #if defined(CONFIG_MX6)
 u32 imx6_src_get_boot_mode(void)
 {
-       if (imx6_is_bmode_from_gpr9())
+       if (readl(&src_base->gpr10) & IMX6_SRC_GPR10_BMODE)
                return readl(&src_base->gpr9);
        else
                return readl(&src_base->sbmr1);