summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/phytec/phycore_am62x/phycore_am62x.env11
-rw-r--r--board/phytec/phycore_am64x/phycore_am64x.env12
-rw-r--r--board/phytec/phycore_imx8mp/phycore_imx8mp.env27
-rw-r--r--board/phytec/phycore_imx93/phycore_imx93.env45
-rw-r--r--configs/phycore-imx8mp_defconfig4
-rw-r--r--include/env/phytec/k3_mmc.env21
-rw-r--r--include/env/phytec/overlays.env38
7 files changed, 97 insertions, 61 deletions
diff --git a/board/phytec/phycore_am62x/phycore_am62x.env b/board/phytec/phycore_am62x/phycore_am62x.env
index 2d6475d408f..046bbd22f25 100644
--- a/board/phytec/phycore_am62x/phycore_am62x.env
+++ b/board/phytec/phycore_am62x/phycore_am62x.env
@@ -1,4 +1,5 @@
#include <env/ti/k3_dfu.env>
+#include <env/phytec/k3_mmc.env>
fdtaddr=0x88000000
loadaddr=0x82000000
@@ -14,13 +15,3 @@ mmcroot=2
mmcpart=1
console=ttyS2,115200n8
earlycon=ns16550a,mmio32,0x02800000
-mmcargs=setenv bootargs console=${console} earlycon=${earlycon}
- root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw
-loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} Image
-loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${fdtfile}
-mmcboot=run mmcargs;
- mmc dev ${mmcdev};
- mmc rescan;
- run loadimage;
- run loadfdt;
- booti ${loadaddr} - ${fdtaddr}
diff --git a/board/phytec/phycore_am64x/phycore_am64x.env b/board/phytec/phycore_am64x/phycore_am64x.env
index e24a958f51d..18f0fa5b4c3 100644
--- a/board/phytec/phycore_am64x/phycore_am64x.env
+++ b/board/phytec/phycore_am64x/phycore_am64x.env
@@ -1,3 +1,5 @@
+#include <env/phytec/k3_mmc.env>
+
fdtaddr=0x88000000
loadaddr=0x82000000
scriptaddr=0x80000000
@@ -12,13 +14,3 @@ mmcroot=2
mmcpart=1
console=ttyS2,115200n8
earlycon=ns16550a,mmio32,0x02800000
-mmcargs=setenv bootargs console=${console} earlycon=${earlycon}
- root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw
-loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} Image
-loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${fdtfile}
-mmcboot=run mmcargs;
- mmc dev ${mmcdev};
- mmc rescan;
- run loadimage;
- run loadfdt;
- booti ${loadaddr} - ${fdtaddr}
diff --git a/board/phytec/phycore_imx8mp/phycore_imx8mp.env b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
index 7f6c5fd2c76..f8f878e8f3a 100644
--- a/board/phytec/phycore_imx8mp/phycore_imx8mp.env
+++ b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
@@ -1,4 +1,5 @@
#include <env/phytec/rauc.env>
+#include <env/phytec/overlays.env>
bootcmd=
if test ${dofastboot} = 1; then
@@ -16,15 +17,17 @@ bootcmd=
fi;
fi;
console=ttymxc0,115200
+bootenv_addr_r=0x49100000
+fdtoverlay_addr_r=0x49000000
dofastboot=0
emmc_dev=2
fastboot_raw_partition_all=0 4194304
fastboot_raw_partition_bootloader=64 8128
-fdt_addr=0x48000000
-fdt_file=CONFIG_DEFAULT_FDT_FILE
+fdt_addr_r=0x48000000
+fdtfile=CONFIG_DEFAULT_FDT_FILE
image=Image
ip_dyn=yes
-loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
+loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}
loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
mmcargs=
setenv bootargs console=${console}
@@ -32,9 +35,15 @@ 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_r} ${filesize};
+ fi;
+ fi;
run mmcargs;
if run loadfdt; then
- booti ${loadaddr} - ${fdt_addr};
+ run mmc_apply_overlays;
+ booti ${loadaddr} - ${fdt_addr_r};
else
echo WARN: Cannot load the DT;
fi;
@@ -51,10 +60,16 @@ netboot=
else
setenv get_cmd tftp;
fi;
+ if test ${no_bootenv} = 0; then
+ if run net_load_bootenv; then
+ env import -t ${bootenv_addr_r} ${filesize};
+ fi;
+ fi;
${get_cmd} ${loadaddr} ${image};
run netargs;
- if ${get_cmd} ${fdt_addr} ${fdt_file}; then
- booti ${loadaddr} - ${fdt_addr};
+ if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then
+ run net_apply_overlays;
+ booti ${loadaddr} - ${fdt_addr_r};
else
echo WARN: Cannot load the DT;
fi;
diff --git a/board/phytec/phycore_imx93/phycore_imx93.env b/board/phytec/phycore_imx93/phycore_imx93.env
index 27bfadfa140..ab65cfce5fd 100644
--- a/board/phytec/phycore_imx93/phycore_imx93.env
+++ b/board/phytec/phycore_imx93/phycore_imx93.env
@@ -1,14 +1,14 @@
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+#include <env/phytec/overlays.env>
+
image=Image
console=ttyLP0
-fdt_addr=0x83000000
-fdto_addr=0x830c0000
-bootenv_addr=0x83500000
-fdt_file=CONFIG_DEFAULT_FDT_FILE
+fdt_addr_r=0x83000000
+fdtoverlay_addr_r=0x830c0000
+bootenv_addr_r=0x83500000
+fdtfile=CONFIG_DEFAULT_FDT_FILE
ip_dyn=yes
-bootenv=bootenv.txt
-mmc_load_bootenv=fatload mmc ${mmcdev}:${mmcpart} ${bootenv_addr} ${bootenv}
mmcdev=CONFIG_SYS_MMC_ENV_DEV
mmcpart=1
mmcroot=2
@@ -16,43 +16,22 @@ mmcautodetect=yes
mmcargs=setenv bootargs console=${console},${baudrate} earlycon
root=/dev/mmcblk${mmcdev}p${mmcroot} ${raucargs} rootwait rw
loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
-loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
-mmc_load_overlay=fatload mmc ${mmcdev}:${mmcpart} ${fdto_addr} ${overlay}
-mmc_apply_overlays=
- fdt address ${fdt_addr};
- for overlay in ${overlays};
- do;
- if run mmc_load_overlay; then
- fdt resize ${filesize};
- fdt apply ${fdto_addr};
- fi;
- done;
+loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}
mmcboot=
echo Booting from mmc ...;
if run mmc_load_bootenv; then
- env import -t ${bootenv_addr} ${filesize};
+ env import -t ${bootenv_addr_r} ${filesize};
fi;
run mmcargs;
if run loadfdt; then
run mmc_apply_overlays;
- booti ${loadaddr} - ${fdt_addr};
+ booti ${loadaddr} - ${fdt_addr_r};
else
echo WARN: Cannot load the DT;
fi;
nfsroot=/nfs
netargs=setenv bootargs console=${console},${baudrate} earlycon
root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
-net_load_bootenv=${get_cmd} ${bootenv_addr} ${bootenv}
-net_load_overlay=${get_cmd} ${fdto_addr} ${overlay}
-net_apply_overlays=
- fdt address ${fdt_addr};
- for overlay in ${overlays};
- do;
- if run net_load_overlay; then
- fdt resize ${filesize};
- fdt apply ${fdto_addr};
- fi;
- done;
netboot=
echo Booting from net ...;
run netargs;
@@ -62,12 +41,12 @@ netboot=
setenv get_cmd tftp;
fi;
if run net_load_bootenv; then
- env import -t ${bootenv_addr} ${filesize};
+ env import -t ${bootenv_addr_r} ${filesize};
fi;
${get_cmd} ${loadaddr} ${image};
- if ${get_cmd} ${fdt_addr} ${fdt_file}; then
+ if ${get_cmd} ${fdt_addr_r} ${fdtfile}; then
run net_apply_overlays;
- booti ${loadaddr} - ${fdt_addr};
+ booti ${loadaddr} - ${fdt_addr_r};
else
echo WARN: Cannot load the DT;
fi;
diff --git a/configs/phycore-imx8mp_defconfig b/configs/phycore-imx8mp_defconfig
index 8dd4963bdc0..da7fe612ca0 100644
--- a/configs/phycore-imx8mp_defconfig
+++ b/configs/phycore-imx8mp_defconfig
@@ -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
diff --git a/include/env/phytec/k3_mmc.env b/include/env/phytec/k3_mmc.env
new file mode 100644
index 00000000000..3d3595ceb7e
--- /dev/null
+++ b/include/env/phytec/k3_mmc.env
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2024 PHYTEC Messtechnik GmbH
+ * Author: Daniel Schultz <d.schultz@phytec.de>
+ */
+
+/* Logic for TI K3 based SoCs to boot from a MMC device. */
+
+#include <env/phytec/overlays.env>
+
+mmcargs=setenv bootargs console=${console} earlycon=${earlycon}
+ root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw
+loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} Image
+loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}
+mmcboot=run mmcargs;
+ mmc dev ${mmcdev};
+ mmc rescan;
+ run loadimage;
+ run loadfdt;
+ run mmc_apply_overlays;
+ booti ${loadaddr} - ${fdt_addr_r}
diff --git a/include/env/phytec/overlays.env b/include/env/phytec/overlays.env
new file mode 100644
index 00000000000..78721cde654
--- /dev/null
+++ b/include/env/phytec/overlays.env
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2024 PHYTEC Messtechnik GmbH
+ * Author: Benjamin Hahn <b.hahn@phytec.de>
+ */
+
+/* Logic to load and apply overlays. Load overlays from bootenv.txt into
+ * environment and apply those overlays.
+ * The variables bootenv_addr_r and fdtoverlay_addr_r are board specific.
+ * get_cmd can be either tftp or dhcp. */
+
+bootenv=bootenv.txt
+mmc_load_bootenv=load mmc ${mmcdev}:${mmcpart} ${bootenv_addr_r} ${bootenv}
+mmc_load_overlay=load mmc ${mmcdev}:${mmcpart} ${fdtoverlay_addr_r} ${overlay}
+mmc_apply_overlays=
+ fdt address ${fdt_addr_r};
+ if test ${no_overlays} = 0; then
+ for overlay in ${overlays};
+ do;
+ if run mmc_load_overlay; then
+ fdt resize ${filesize};
+ fdt apply ${fdtoverlay_addr_r};
+ fi;
+ done;
+ fi;
+net_load_bootenv=${get_cmd} ${bootenv_addr_r} ${bootenv}
+net_load_overlay=${get_cmd} ${fdtoverlay_addr_r} ${overlay}
+net_apply_overlays=
+ fdt address ${fdt_addr_r};
+ if test ${no_overlays} = 0; then
+ for overlay in ${overlays};
+ do;
+ if run net_load_overlay; then
+ fdt resize ${filesize};
+ fdt apply ${fdtoverlay_addr_r};
+ fi;
+ done;
+ fi;