// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /* * Copyright (c) 2024-2026 TQ-Systems GmbH , * 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;