imx: replace CONFIG_SECURE_BOOT with CONFIG_IMX_HAB
[oweals/u-boot.git] / arch / arm / mach-imx / spl.c
index 1f230aca3397af2de617c7551d249bfb3cbaadf9..9fa397c94da28c9576c4d0a48266f157ff7a4466 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
+__weak int spl_board_boot_device(enum boot_device boot_dev_spl)
+{
+       return 0;
+}
+
 #if defined(CONFIG_MX6)
 /* determine boot device from SRC_SBMR1 (BOOT_CFG[4:1]) or SRC_GPR9 register */
 u32 spl_boot_device(void)
@@ -94,6 +99,11 @@ u32 spl_boot_device(void)
        /* NAND Flash: 8.5.2, Table 8-10 */
        case IMX6_BMODE_NAND_MIN ... IMX6_BMODE_NAND_MAX:
                return BOOT_DEVICE_NAND;
+#if defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL)
+       /* QSPI boot */
+       case IMX6_BMODE_QSPI:
+               return BOOT_DEVICE_SPI;
+#endif
        }
        return BOOT_DEVICE_NONE;
 }
@@ -127,6 +137,9 @@ u32 spl_boot_device(void)
 
        enum boot_device boot_device_spl = get_boot_device();
 
+       if (IS_ENABLED(CONFIG_IMX8MM))
+               return spl_board_boot_device(boot_device_spl);
+
        switch (boot_device_spl) {
 #if defined(CONFIG_MX7)
        case SD1_BOOT:
@@ -178,7 +191,18 @@ int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
 /* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */
 u32 spl_boot_mode(const u32 boot_device)
 {
+/*
+ * When CONFIG_SPL_FORCE_MMC_BOOT is defined the 'boot_device' is used
+ * unconditionally to decide about device to use for booting.
+ * This is crucial for falcon boot mode, when board boots up (i.e. ROM
+ * loads SPL) from slow SPI-NOR memory and afterwards the SPL's 'falcon' boot
+ * mode is used to load Linux OS from eMMC partition.
+ */
+#ifdef CONFIG_SPL_FORCE_MMC_BOOT
+       switch (boot_device) {
+#else
        switch (spl_boot_device()) {
+#endif
        /* for MMC return either RAW or FAT mode */
        case BOOT_DEVICE_MMC1:
        case BOOT_DEVICE_MMC2:
@@ -198,7 +222,7 @@ u32 spl_boot_mode(const u32 boot_device)
 }
 #endif
 
-#if defined(CONFIG_SECURE_BOOT)
+#if defined(CONFIG_IMX_HAB)
 
 /*
  * +------------+  0x0 (DDR_UIMAGE_START) -
@@ -261,6 +285,7 @@ __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
        }
 }
 
+#if !defined(CONFIG_SPL_FIT_SIGNATURE)
 ulong board_spl_fit_size_align(ulong size)
 {
        /*
@@ -285,6 +310,7 @@ void board_spl_fit_post_load(ulong load_addr, size_t length)
                hang();
        }
 }
+#endif
 
 #endif