]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
board: phycore-am62x: Extend for better environment handling
authorWadim Egorov <w.egorov@phytec.de>
Wed, 3 Apr 2024 13:59:11 +0000 (15:59 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 12 Apr 2024 02:45:29 +0000 (20:45 -0600)
Select environment location based on the device we boot from.
Also, introduce a "boot" variable that represents the current boot
device and can be used by scripts.

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
board/phytec/phycore_am62x/phycore-am62x.c
configs/phycore_am62x_a53_defconfig

index 91a24018c40add49e4a3056f496ebf4fae0f9733..618b4c370d1e636c403cf32e6ef252661dc4e144 100644 (file)
@@ -57,3 +57,67 @@ void spl_board_init(void)
               MCU_CTRL_DEVICE_CLKOUT_32K_CTRL);
 }
 #endif
+
+#if IS_ENABLED(CONFIG_ENV_IS_IN_FAT) || IS_ENABLED(CONFIG_ENV_IS_IN_MMC)
+int mmc_get_env_dev(void)
+{
+       u32 boot_device = get_boot_device();
+
+       switch (boot_device) {
+       case BOOT_DEVICE_MMC1:
+               return 0;
+       case BOOT_DEVICE_MMC2:
+               return 1;
+       };
+
+       return CONFIG_SYS_MMC_ENV_DEV;
+}
+#endif
+
+enum env_location env_get_location(enum env_operation op, int prio)
+{
+       u32 boot_device = get_boot_device();
+
+       if (prio)
+               return ENVL_UNKNOWN;
+
+       switch (boot_device) {
+       case BOOT_DEVICE_MMC1:
+       case BOOT_DEVICE_MMC2:
+               if (CONFIG_IS_ENABLED(ENV_IS_IN_FAT))
+                       return ENVL_FAT;
+               if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC))
+                       return ENVL_MMC;
+       case BOOT_DEVICE_SPI:
+               if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
+                       return ENVL_SPI_FLASH;
+       default:
+               return ENVL_NOWHERE;
+       };
+}
+
+#if IS_ENABLED(CONFIG_BOARD_LATE_INIT)
+int board_late_init(void)
+{
+       u32 boot_device = get_boot_device();
+
+       switch (boot_device) {
+       case BOOT_DEVICE_MMC1:
+               env_set_ulong("mmcdev", 0);
+               env_set("boot", "mmc");
+               break;
+       case BOOT_DEVICE_MMC2:
+               env_set_ulong("mmcdev", 1);
+               env_set("boot", "mmc");
+               break;
+       case BOOT_DEVICE_SPI:
+               env_set("boot", "spi");
+               break;
+       case BOOT_DEVICE_ETHERNET:
+               env_set("boot", "net");
+               break;
+       };
+
+       return 0;
+}
+#endif
index 552b7e913961c53c1d6f6fbfbf8346441f43b456..08a2532d39872398ae8673d8c6bb13bdfcbdeacc 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_BOOTSTD_FULL=y
 CONFIG_SYS_BOOTM_LEN=0x800000
 CONFIG_BOOTCOMMAND="run mmcboot; bootflow scan -lb"
 CONFIG_DEFAULT_FDT_FILE="oftree"
+CONFIG_BOARD_LATE_INIT=y
 CONFIG_SPL_MAX_SIZE=0x58000
 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
 CONFIG_SPL_BSS_START_ADDR=0x80c80000