diff options
author | Tom Rini <trini@konsulko.com> | 2022-03-12 07:20:29 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-03-12 07:20:29 -0500 |
commit | 6d35c24892c9d2f3eb03bee57c77cc9a3560c134 (patch) | |
tree | 396170b7e892b0351bba96de513048a9b92c33bb /board | |
parent | 589c659035a44a683b087fd75fe0b7667f7be7f5 (diff) | |
parent | 228173d8556ee3209c3c8ea6a296b355b28c7e15 (diff) | |
download | u-boot-6d35c24892c9d2f3eb03bee57c77cc9a3560c134.zip u-boot-6d35c24892c9d2f3eb03bee57c77cc9a3560c134.tar.gz u-boot-6d35c24892c9d2f3eb03bee57c77cc9a3560c134.tar.bz2 |
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-spiWIP/12Mar2022
- sunXi SPI fixups (Andre)
- bcm iproc qspi (Rayagonda)
Diffstat (limited to 'board')
-rw-r--r-- | board/sunxi/board.c | 51 |
1 files changed, 43 insertions, 8 deletions
diff --git a/board/sunxi/board.c b/board/sunxi/board.c index 82c52b2..a096159 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -171,21 +171,56 @@ void i2c_init_board(void) #endif } -#if defined(CONFIG_ENV_IS_IN_MMC) && defined(CONFIG_ENV_IS_IN_FAT) +/* + * Try to use the environment from the boot source first. + * For MMC, this means a FAT partition on the boot device (SD or eMMC). + * If the raw MMC environment is also enabled, this is tried next. + * SPI flash falls back to FAT (on SD card). + */ enum env_location env_get_location(enum env_operation op, int prio) { - switch (prio) { - case 0: - return ENVL_FAT; + enum env_location boot_loc = ENVL_FAT; - case 1: - return ENVL_MMC; + gd->env_load_prio = prio; + switch (sunxi_get_boot_device()) { + case BOOT_DEVICE_MMC1: + case BOOT_DEVICE_MMC2: + boot_loc = ENVL_FAT; + break; + case BOOT_DEVICE_NAND: + if (IS_ENABLED(CONFIG_ENV_IS_IN_NAND)) + boot_loc = ENVL_NAND; + break; + case BOOT_DEVICE_SPI: + if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH)) + boot_loc = ENVL_SPI_FLASH; + break; + case BOOT_DEVICE_BOARD: + break; default: - return ENVL_UNKNOWN; + break; + } + + /* Always try to access the environment on the boot device first. */ + if (prio == 0) + return boot_loc; + + if (prio == 1) { + switch (boot_loc) { + case ENVL_SPI_FLASH: + return ENVL_FAT; + case ENVL_FAT: + if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC)) + return ENVL_MMC; + break; + default: + break; + } } + + return ENVL_UNKNOWN; } -#endif #ifdef CONFIG_DM_MMC static void mmc_pinmux_setup(int sdc); |