On Wed, Aug 23, 2017 at 7:41 PM, Maxime Ripard <maxime.rip...@free-electrons.com> wrote: > The current code, if there's both an eMMC and an MMC slot available on the > board, will swap the MMC indices based on whether we booted from the eMMC > or the MMC. This way, the MMC we're supposed to boot on will always have > the index 0. > > However, this causes various issues, for example when using other > components that base their behaviour on the MMC index, such as fastboot. > > Let's remove that hack, and take the opposite approach. The MMC will always > have the same index, but the bootcmd will pick the same device than the one > we booted from. This is done through the introduction of the mmc_bootdev > environment variable that will be filled by the board code based on the > boot device informations we can get from the SoC. > > In order to not introduce regressions, we also need to adjust the fastboot > MMC device and the environment device in order to set it to the eMMC, over > the MMC, like it used to be the case. > > Signed-off-by: Maxime Ripard <maxime.rip...@free-electrons.com> > --- > board/sunxi/board.c | 20 ++++++-------------- > include/configs/sunxi-common.h | 36 ++++++++++++++++++++++++++++++------ > 2 files changed, 36 insertions(+), 20 deletions(-) > > diff --git a/board/sunxi/board.c b/board/sunxi/board.c > index e1d48140878f..664c7d2d8126 100644 > --- a/board/sunxi/board.c > +++ b/board/sunxi/board.c > @@ -492,20 +492,6 @@ int board_mmc_init(bd_t *bis) > return -1; > #endif > > -#if !defined(CONFIG_SPL_BUILD) && CONFIG_MMC_SUNXI_SLOT_EXTRA == 2 > - /* > - * On systems with an emmc (mmc2), figure out if we are booting from > - * the emmc and if we are make it "mmc dev 0" so that boot.scr, etc. > - * are searched there first. Note we only do this for u-boot proper, > - * not for the SPL, see spl_boot_device(). > - */ > - if (readb(SPL_ADDR + 0x28) == SUNXI_BOOTED_FROM_MMC2) { > - /* Booting from emmc / mmc2, swap */ > - mmc0->block_dev.devnum = 1; > - mmc1->block_dev.devnum = 0; > - } > -#endif > - > return 0; > } > #endif > @@ -725,12 +711,18 @@ int misc_init_r(void) > > setenv("fel_booted", NULL); > setenv("fel_scriptaddr", NULL); > + setenv("mmc_bootdev", NULL);
This doesn't apply on master due to commit 382bee57f19b ("env: Rename setenv() to env_set()"). Works as advertised once fixed and applied. Tested-by: Chen-Yu Tsai <w...@csie.org> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot