summaryrefslogtreecommitdiff
path: root/include/env/tq/mmc.env
diff options
context:
space:
mode:
Diffstat (limited to 'include/env/tq/mmc.env')
-rw-r--r--include/env/tq/mmc.env82
1 files changed, 82 insertions, 0 deletions
diff --git a/include/env/tq/mmc.env b/include/env/tq/mmc.env
new file mode 100644
index 00000000000..abf561f8467
--- /dev/null
+++ b/include/env/tq/mmc.env
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2024-2026 TQ-Systems GmbH <[email protected]>,
+ * 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;