phycore-imx8mp: Add overlay and bootenv.txt support

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>
This commit is contained in:
Benjamin Hahn 2024-07-16 22:11:27 -07:00 committed by Tom Rini
parent 26b2d2c0f2
commit 0ff9141fb8
2 changed files with 17 additions and 2 deletions

View File

@ -1,4 +1,5 @@
#include <env/phytec/rauc.env> #include <env/phytec/rauc.env>
#include <env/phytec/overlays.env>
bootcmd= bootcmd=
if test ${dofastboot} = 1; then if test ${dofastboot} = 1; then
@ -16,6 +17,8 @@ bootcmd=
fi; fi;
fi; fi;
console=ttymxc0,115200 console=ttymxc0,115200
bootenv_addr=0x49100000
fdto_addr=0x49000000
dofastboot=0 dofastboot=0
emmc_dev=2 emmc_dev=2
fastboot_raw_partition_all=0 4194304 fastboot_raw_partition_all=0 4194304
@ -32,8 +35,14 @@ mmcargs=
mmcautodetect=yes mmcautodetect=yes
mmcboot= mmcboot=
echo Booting from mmc ...; 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; run mmcargs;
if run loadfdt; then if run loadfdt; then
run mmc_apply_overlays;
booti ${loadaddr} - ${fdt_addr}; booti ${loadaddr} - ${fdt_addr};
else else
echo WARN: Cannot load the DT; echo WARN: Cannot load the DT;
@ -51,9 +60,15 @@ netboot=
else else
setenv get_cmd tftp; setenv get_cmd tftp;
fi; 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}; ${get_cmd} ${loadaddr} ${image};
run netargs; run netargs;
if ${get_cmd} ${fdt_addr} ${fdt_file}; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then
run net_apply_overlays;
booti ${loadaddr} - ${fdt_addr}; booti ${loadaddr} - ${fdt_addr};
else else
echo WARN: Cannot load the DT; echo WARN: Cannot load the DT;

View File

@ -13,6 +13,7 @@ CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="freescale/imx8mp-phyboard-pollux-rdk" CONFIG_DEFAULT_DEVICE_TREE="freescale/imx8mp-phyboard-pollux-rdk"
CONFIG_SPL_TEXT_BASE=0x920000 CONFIG_SPL_TEXT_BASE=0x920000
CONFIG_TARGET_PHYCORE_IMX8MP=y CONFIG_TARGET_PHYCORE_IMX8MP=y
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_MONITOR_LEN=524288 CONFIG_SYS_MONITOR_LEN=524288
CONFIG_SPL_MMC=y CONFIG_SPL_MMC=y
CONFIG_SPL_SERIAL=y CONFIG_SPL_SERIAL=y
@ -51,8 +52,6 @@ CONFIG_SPL_POWER=y
CONFIG_SPL_WATCHDOG=y CONFIG_SPL_WATCHDOG=y
CONFIG_HUSH_PARSER=y CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="u-boot=> " 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_CRC32 is not set
CONFIG_CMD_EEPROM=y CONFIG_CMD_EEPROM=y
CONFIG_SYS_I2C_EEPROM_ADDR_LEN=2 CONFIG_SYS_I2C_EEPROM_ADDR_LEN=2
@ -76,6 +75,7 @@ CONFIG_CMD_EXT2=y
CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4=y
CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_FAT=y CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
CONFIG_OF_CONTROL=y CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y CONFIG_SPL_OF_CONTROL=y
CONFIG_ENV_OVERWRITE=y CONFIG_ENV_OVERWRITE=y