// SPDX-License-Identifier: GPL-2.0+
#ifdef CONFIG_SYS_BOOT_LOCKED
#define SETUP_BOOT_MENU setup_boot_menu=setenv bootmenu_0 eMMC=run bootcmd
#else
#define SETUP_BOOT_MENU setup_boot_menu= \
			if test "${mmcdev}" = 1; then \
				setenv emmc_priority 0; \
				setenv sd_priority 1; \
			else setenv emmc_priority 1; \
				setenv sd_priority 0; \
			fi; \
			setenv bootmenu_${emmc_priority} eMMC=run boot_emmc; \
			setenv bootmenu_${sd_priority} SD=run boot_sd;
#endif

altbootcmd=
	echo Performing rollback...;
	if test "${mmcpart_committed}" = 1; then
		setenv mmcpart 2;
		setenv mmcpart_committed 2;
	else
		setenv mmcpart 1;
		setenv mmcpart_committed 1;
	fi;
	setenv bootcount 0;
	setenv upgrade_available;
	setenv ustate 3;
	saveenv;
	run bootcmd;
boot_emmc=setenv mmcdev_wanted 1; run persist_mmcdev; run bootcmd;
boot_sd=setenv mmcdev_wanted 0; run persist_mmcdev; run bootcmd;
bootcmd=run finduuid; run distro_bootcmd
bootdelay=2
bootlimit=3
bootm_size=0x10000000
commit_mmc=
	if test "${ustate}" = 1 -a "${mmcpart}" != "${mmcpart_committed}"; then
		setenv mmcpart_committed ${mmcpart};
		saveenv;
	fi;
console=ttymxc0
fdt_addr=0x83000000
fdtfile=imx7d-smegw01.dtb
fit_addr=0x88000000
image=fitImage
loadaddr=0x80800000
loadbootpart=mmc partconf 1 boot_part
loadimage=load mmc ${mmcdev}:${gpt_partition_entry} ${fit_addr} boot/${image}
loadpart=gpt setenv mmc ${mmcdev} rootfs-${mmcpart_committed}
mmcargs=
	setenv bootargs console=${console},${baudrate} root=/dev/mmcblk${mmcdev}p${gpt_partition_entry} rootwait rw SM_ROOT_DEV=${mmcdev} SM_ROOT_PART=${gpt_partition_entry} SM_BOOT_PART=${boot_part}
mmcboot=
	echo Booting...;
	echo mmcdev: ${mmcdev};
	run commit_mmc;
	echo mmcpart: ${mmcpart_committed};
	run loadpart;
	echo gptpart: ${gpt_partition_entry};
	run loadbootpart;
	if run loadimage; then
		;
	else
		run altbootcmd;
	fi;
	run mmcargs;
	if bootm ${fit_addr}; then
		;
	else
		run altbootcmd;
	fi;
mmcdev=1
mmcpart=1
mmcpart_committed=1
persist_mmcdev=
	if test "${mmcdev}" != "${mmcdev_wanted}"; then
		setenv mmcdev "${mmcdev_wanted}";
		saveenv;
	fi;
setup_boot_menu=
	if test "${mmcdev}" = 1; then
		setenv emmc_priority 0;
		setenv sd_priority 1;
	else
		setenv emmc_priority 1;
		setenv sd_priority 0;
	fi;
	setenv bootmenu_${emmc_priority} eMMC=run boot_emmc;
	setenv bootmenu_${sd_priority} SD=run boot_sd;
SETUP_BOOT_MENU
