// SPDX-License-Identifier: GPL-2.0-or-later /* Copyright (c) Toradex */ #include #include #include #include #include #include #include #include #include #include #include #include #include DECLARE_GLOBAL_DATA_PTR; int spl_board_boot_device(enum boot_device boot_dev_spl) { switch (boot_dev_spl) { case SD1_BOOT: case MMC1_BOOT: return BOOT_DEVICE_MMC1; case SD2_BOOT: case MMC2_BOOT: return BOOT_DEVICE_MMC2; case USB_BOOT: return BOOT_DEVICE_BOARD; default: return BOOT_DEVICE_NONE; } } void spl_board_init(void) { int ret; ret = ele_start_rng(); if (ret) printf("Fail to start RNG: %d\n", ret); } void board_init_f(ulong dummy) { int ret; /* Clear the BSS. */ memset(__bss_start, 0, __bss_end - __bss_start); if (IS_ENABLED(CONFIG_SPL_RECOVER_DATA_SECTION)) spl_save_restore_data(); timer_init(); /* Need dm_init() to run before any SCMI calls */ spl_early_init(); /* Need to enable SCMI drivers and ELE driver before console */ ret = imx9_probe_mu(); if (ret) hang(); /* MU not probed, nothing can be outputed, hang */ arch_cpu_init(); preloader_console_init(); debug("SOC: 0x%x\n", gd->arch.soc_rev); debug("LC: 0x%x\n", gd->arch.lifecycle); get_reset_reason(true, false); board_init_r(NULL, 0); }