// 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=
	if test "${bootcount}" -gt "${bootlimit}"; then
		run altbootcmd;
	else
		if test "${ustate}" = 1; then
			setenv upgrade_available 1;
			saveenv;
		fi;
		run mmcboot;
	fi;
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
loadbootpart=mmc partconf 1 boot_part
loadimage=load mmc ${mmcdev}:${gpt_partition_entry}
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;
#ifdef CONFIG_SYS_BOOT_LOCKED
	hab_auth_img_or_fail ${fileaddr} ${filesize};
#else
	hab_auth_img ${fileaddr} ${filesize};
#endif
	run mmcargs;
	if bootm; 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
