u-boot/include/env/tq/mmc.env
Markus Niebel de27ed88b3 env: tq: add shareable environment settings
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>
2026-04-02 09:05:46 -03:00

83 lines
2.0 KiB
Bash

// 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;