Fix SD Card Boot
* Previously, the eMMC would be used for the filesystem regardless of
the DIP switch configuration. Now, boot based on the switches.
* Regardless of the switches, fastboot will still always flash the eMMC.
Change-Id: I35a4114586ddf3b15eef6e23b9740c66708d0987
diff --git a/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c b/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c
index 4b1cdc5..fb9d3f9 100644
--- a/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c
+++ b/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c
@@ -318,23 +318,22 @@
int board_mmc_get_env_dev(int devno)
{
- /*
- * This is used for determining which MMC fastboot will flash.
- * For Phanbell, we should always flash the eMMC even if booting
- * SD. This way SD can be used for recovery.
- */
- return CONFIG_SYS_MMC_ENV_DEV;
+ return devno;
}
int board_late_init(void)
{
char s[32] = {0};
+ char ubootdev[32];
int mmc_dev = board_get_rom_mmc_dev();
struct mmc *fastboot_mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
if (fastboot_mmc) {
snprintf(s, sizeof(s), "%llu", fastboot_mmc->capacity_user);
env_set("fastboot.mmc_size", s);
+ /* Force fastboot to always flash the eMMC */
+ snprintf(ubootdev, sizeof(ubootdev), "%d", CONFIG_SYS_MMC_ENV_DEV);
+ env_set("target_ubootdev", ubootdev);
}
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
@@ -344,9 +343,9 @@
static char bootdev[32];
static char bootcmd[128];
- snprintf(bootdev, sizeof(bootdev), "%d", mmc_get_env_dev());
+ snprintf(bootdev, sizeof(bootdev), "%d", mmc_dev);
env_set("bootdev", bootdev);
- snprintf(bootcmd, sizeof(bootcmd), "ext2load mmc %d:1 ${loadaddr} boot.scr; source; boota mmc0 boot_a", mmc_dev);
+ snprintf(bootcmd, sizeof(bootcmd), "ext2load mmc %d:1 ${loadaddr} boot.scr; source; boota mmc%d boot_a", mmc_dev, mmc_dev);
env_set("bootcmd", bootcmd);
// Set up a command that will load and start the M4.