]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
phycore-imx8mp: Add overlay and bootenv.txt support
authorBenjamin Hahn <B.Hahn@phytec.de>
Wed, 17 Jul 2024 05:11:27 +0000 (22:11 -0700)
committerTom Rini <trini@konsulko.com>
Mon, 22 Jul 2024 19:47:57 +0000 (13:47 -0600)
Add support for loading bootenv.txt as well as loading and applying
overlays during boot from mmc and net.

${no_bootenv}: Prevent loading external bootenv.txt environment. Use
       ${overlays} variable directly from u-boot environment.
${no_overlay}: Do not load overlays defined in ${overlays} variable.
       Overlays loaded over the extension command are still
       being applied.

Signed-off-by: Benjamin Hahn <B.Hahn@phytec.de>
Signed-off-by: Daniel Schultz <d.schultz@phytec.de>
Reviewed-by: Teresa Remmet <t.remmet@phytec.de>
Reviewed-by: Wadim Egorov <w.egorov@phytec.de>
board/phytec/phycore_imx8mp/phycore_imx8mp.env
configs/phycore-imx8mp_defconfig

index 7f6c5fd2c7607a3f1fe0af50ba244c269bb0b173..4ed5dc7e272d160f1a9130d9b4e55a8fddca4b35 100644 (file)
@@ -1,4 +1,5 @@
 #include <env/phytec/rauc.env>
+#include <env/phytec/overlays.env>
 
 bootcmd=
        if test ${dofastboot} = 1; then
@@ -16,6 +17,8 @@ bootcmd=
                fi;
        fi;
 console=ttymxc0,115200
+bootenv_addr=0x49100000
+fdto_addr=0x49000000
 dofastboot=0
 emmc_dev=2
 fastboot_raw_partition_all=0 4194304
@@ -32,8 +35,14 @@ mmcargs=
 mmcautodetect=yes
 mmcboot=
        echo Booting from mmc ...;
+       if test ${no_bootenv} = 0; then
+               if run mmc_load_bootenv; then
+                       env import -t ${bootenv_addr} ${filesize};
+               fi;
+       fi;
        run mmcargs;
        if run loadfdt; then
+               run mmc_apply_overlays;
                booti ${loadaddr} - ${fdt_addr};
        else
                echo WARN: Cannot load the DT;
@@ -51,9 +60,15 @@ netboot=
        else
                setenv get_cmd tftp;
        fi;
+       if test ${no_bootenv} = 0; then
+               if run net_load_bootenv; then
+                       env import -t ${bootenv_addr} ${filesize};
+               fi;
+       fi;
        ${get_cmd} ${loadaddr} ${image};
        run netargs;
        if ${get_cmd} ${fdt_addr} ${fdt_file}; then
+               run net_apply_overlays;
                booti ${loadaddr} - ${fdt_addr};
        else
                echo WARN: Cannot load the DT;
index 8dd4963bdc0f17b80f1be2d6661c9aee375633c3..da7fe612ca03e7bf2a0409fda8b4c6765a8c2d8f 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DEFAULT_DEVICE_TREE="freescale/imx8mp-phyboard-pollux-rdk"
 CONFIG_SPL_TEXT_BASE=0x920000
 CONFIG_TARGET_PHYCORE_IMX8MP=y
+CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_SYS_MONITOR_LEN=524288
 CONFIG_SPL_MMC=y
 CONFIG_SPL_SERIAL=y
@@ -51,8 +52,6 @@ CONFIG_SPL_POWER=y
 CONFIG_SPL_WATCHDOG=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="u-boot=> "
-# CONFIG_CMD_EXPORTENV is not set
-# CONFIG_CMD_IMPORTENV is not set
 # CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_EEPROM=y
 CONFIG_SYS_I2C_EEPROM_ADDR_LEN=2
@@ -76,6 +75,7 @@ CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
 CONFIG_ENV_OVERWRITE=y