]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
env: tq: add shareable environment settings
authorMarkus Niebel <Markus.Niebel@ew.tq-group.com>
Mon, 23 Mar 2026 13:47:31 +0000 (14:47 +0100)
committerFabio Estevam <festevam@nabladev.com>
Thu, 2 Apr 2026 12:05:46 +0000 (09:05 -0300)
Prepare moving boiler plate code out of board confguration header and
prepare to share a lot of things between boards.

Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>
Signed-off-by: Max Merchel <Max.Merchel@ew.tq-group.com>
include/env/tq/mmc.env [new file with mode: 0644]
include/env/tq/nfs.env [new file with mode: 0644]
include/env/tq/spi.env [new file with mode: 0644]
include/env/tq/tq-imx-shared.env [new file with mode: 0644]
include/env/tq/ubi.env [new file with mode: 0644]

diff --git a/include/env/tq/mmc.env b/include/env/tq/mmc.env
new file mode 100644 (file)
index 0000000..abf561f
--- /dev/null
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2024-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Max Merchel
+ *
+ * shared mmc environment for TQ boards
+ */
+
+addmmc=
+       setenv bootargs "${bootargs}"
+       root=/dev/mmcblk"${mmcblkdev}"p"${mmcrootpart}" "${rootfsmode}" rootwait;
+
+get_blockcount=
+       setexpr blkc "${filesize}" + 0x1ff;
+       setexpr blkc "${blkc}" / 0x200;
+
+load_mmc=
+       mmc dev "${mmcdev}"; mmc rescan;
+       load mmc "${mmcdev}":"${mmcpart}" "${kernel_addr_r}" /boot/"${image}";
+       load mmc "${mmcdev}":"${mmcpart}" "${fdt_addr_r}" /boot/"${fdtfile}";
+       fdt address "${fdt_addr_r}";
+        fdt resize 0x100000;
+       for overlay in "${fdt_overlays}"; do
+               load mmc "${mmcdev}":"${mmcpart}" "${fdtoverlay_addr_r}"
+                        /boot/"${overlay}" && fdt apply "${fdtoverlay_addr_r}";
+       done;
+
+mmcargs=run addtty addmmc
+
+mmcboot=
+       echo "Booting from mmc ...";
+       setenv bootargs && run mmcargs &&
+       if run load_mmc; then
+               run boot_os;
+       else
+               echo "ERROR: loading from mmc";
+       fi;
+
+mmcpart=2
+
+mmc_finish_update_uboot=
+       mmc write "${loadaddr}" "${update_start_blk}" "${blkc}";
+       mmc dev "${mmcdev}" 0;
+       setenv update_part;
+       setenv update_start_blk;
+       setenv blkc;
+
+mmc_prepare_update_uboot=
+       echo "Write U-Boot to mmc "${mmcdev}" ...";
+       mmc dev "${mmcdev}"; mmc rescan;
+       run get_blockcount;
+       setenv update_start_blk "${uboot_mmc_start}";
+       setenv update_part 0;
+
+mmc_switch_part=
+       mmc partconf "${mmcdev}" update_part;
+       mmc dev "${mmcdev}" "${update_part}";
+
+mmcrootpart=2
+
+update_uboot_mmc=
+       run check_ipaddr;
+       if tftp "${uboot}"; then
+               run mmc_prepare_update_uboot;
+               if itest "${blkc}" >= "${uboot_mmc_size}"; then
+                       echo "ERROR: size to large ...";
+                       exit;
+               fi;
+               if itest "${mmcdev}" == "${emmc_dev}"; then
+                       run mmc_switch_part;
+                       if itest "${update_part}" > 0 ; then
+                               if env exists emmc_bootp_start; then
+                                       setenv update_start_blk "${emmc_bootp_start}";
+                               else
+                                       echo "ERROR: eMMC boot partition block unset";
+                                       exit;
+                               fi;
+                       fi;
+               fi;
+               run mmc_finish_update_uboot;
+       fi;
diff --git a/include/env/tq/nfs.env b/include/env/tq/nfs.env
new file mode 100644 (file)
index 0000000..53fcbd0
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2024-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Max Merchel
+ *
+ * shared nfs environment for TQ boards
+ */
+
+addnfs=
+       setenv bootargs "${bootargs}" root=/dev/nfs rw
+        nfsroot="${serverip}":"${rootpath}",v3,tcp
+
+load_nfs=
+       nfs "${kernel_addr_r}" "${serverip}":"${rootpath}"/boot/"${image}";
+       nfs "${fdt_addr_r}" "${serverip}":"${rootpath}"/boot/"${fdtfile}";
+       fdt address "${fdt_addr_r}";
+       fdt resize 0x100000;
+       for overlay in "${fdt_overlays}"; do
+               nfs "${fdtoverlay_addr_r}"
+                       "${serverip}":"${rootpath}"/boot/"${overlay}" &&
+                       fdt apply "${fdtoverlay_addr_r}";
+       done;
+
+load_tftp=
+       tftp "${kernel_addr_r}" "${image}";
+       tftp "${fdt_addr_r}" "${fdtfile}";
+       fdt address "${fdt_addr_r}";
+       fdt resize 0x100000;
+       for overlay in "${fdt_overlays}"; do
+               if tftp "${fdtoverlay_addr_r}" "${overlay}"; then
+                       fdt apply "${fdtoverlay_addr_r}";
+               else
+                       exit;
+               fi;
+       done;
+
+netargs=run addnfs addip addtty
+
+netloadcmd=load_tftp
+
+nfsboot=
+       echo "Booting from NFS ...";
+       setenv bootargs;
+       run netargs;
+       run check_ipaddr;
+       if run ${netloadcmd}; then
+               run boot_os;
+       else
+               echo "ERROR: loading from NFS";
+       fi;
diff --git a/include/env/tq/spi.env b/include/env/tq/spi.env
new file mode 100644 (file)
index 0000000..47dcfea
--- /dev/null
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2024-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Max Merchel
+ *
+ * shared spi environment for TQ boards
+ */
+
+update_uboot_spi=
+       run check_ipaddr;
+       if tftp ${uboot}; then
+               if itest "${filesize}" >= "${uboot_spi_size}"; then
+                       echo "ERROR: size to large ...";
+                       exit;
+               fi;
+               echo "Write u-boot image to SPI NOR ...";
+               if sf probe; then
+                       run write_uboot_spi;
+               fi;
+       fi;
+
+write_uboot_spi=sf update "${loadaddr}" "${uboot_spi_start}" "${filesize}"
diff --git a/include/env/tq/tq-imx-shared.env b/include/env/tq/tq-imx-shared.env
new file mode 100644 (file)
index 0000000..d4e42f8
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2024-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Max Merchel
+ *
+ * shared environment for TQ imx boards
+ */
+
+#ifdef CONFIG_CMD_SF
+#include "spi.env"
+#ifdef CONFIG_CMD_UBIFS
+#include "ubi.env"
+#endif /* CONFIG_CMD_UBIFS */
+#endif /* CONFIG_CMD_SF */
+
+#ifdef CONFIG_CMD_MMC
+#include "mmc.env"
+#endif
+
+#ifdef CONFIG_CMD_NFS
+#include "nfs.env"
+#endif
+
+addip=
+       run check_ipaddr;
+       setenv bootargs "${bootargs}"
+       ip="${ipaddr}":"${serverip}":"${gatewayip}":"${netmask}":"${hostname}":"${netdev}":off
+
+addtty=setenv bootargs "${bootargs}" "${console}"
+
+check_ipaddr=
+       if test -z "${ipaddr}" || test -z "${serverip}"; then
+               echo "ipaddr or serverip unset, falling back to DHCP...";
+               dhcp;
+       fi;
+
+rootfsmode=ro
diff --git a/include/env/tq/ubi.env b/include/env/tq/ubi.env
new file mode 100644 (file)
index 0000000..01243d2
--- /dev/null
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2024-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Max Merchel
+ *
+ * shared ubi environment for TQ boards
+ */
+
+addubi=
+       setenv bootargs "${bootargs}" rootfstype=ubifs ubi.mtd="${ubimtdname}"
+        root=ubi0:"${ubirootfsvol}" "${rootfsmode}" rootwait;
+
+load_spi=
+       if sf probe; then
+                if ubi part "${ubirootfspart}"; then
+                       if ubifsmount ubi0:"${ubirootfsvol}"; then
+                               ubifsload "${kernel_addr_r}" /boot/"${image}";
+                               ubifsload "${fdt_addr_r}" /boot/"${fdtfile}";
+                                fdt address "${fdt_addr_r}";
+                               fdt resize 0x100000;
+                               for overlay in "${fdt_overlays}"; do
+                                       ubifsload "${fdtoverlay_addr_r}"
+                                       /boot/"${overlay}" &&
+                                       fdt apply "${fdtoverlay_addr_r}";
+                               done;
+                               ubifsumount;
+                       fi;
+                       ubi detach;
+               fi;
+       fi
+
+ubiargs=run addubi addtty
+
+ubiboot=
+       echo "Booting from UBI ...";
+       setenv bootargs;
+       run ubiargs;
+       if run load_spi; then
+               run boot_os;
+       else
+               echo "ERROR: loading kernel";
+       fi;
+
+ubimtdname=mtdname
+ubirootfspart=ubi
+ubirootfsvol=root