Loading...
/* SPDX-License-Identifier: GPL-2.0+ */

loadaddr=0x90000000
bootcmd=
	echo "Booting RAUC A/B system";
	setenv devtype mmc; setenv devnum 0;
	test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B";
	test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3;
	test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3;
	setenv raucslot;
	for BOOT_SLOT in "${BOOT_ORDER}"; do
		if test "x${raucslot}" != "x"; then
			echo "skip remaining slots...";
		elif test "x${BOOT_SLOT}" = "xA"; then
			if test ${BOOT_A_LEFT} -gt 0; then
				setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1;
				echo "Found valid RAUC slot A";
				setenv raucslot "rauc.slot=A";
				setenv raucpart A; setenv distro_bootpart 6;
			fi;
		elif test "x${BOOT_SLOT}" = "xB"; then
			if test ${BOOT_B_LEFT} -gt 0; then
				setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1;
				echo "Found valid RAUC slot B";
				setenv raucslot "rauc.slot=B";
				setenv raucpart B; setenv distro_bootpart 7;
			fi;
		fi;
	done;
	if test -n "${raucslot}"; then
		setenv bootargs console=ttyMSM1 root=PARTLABEL=rootfs_${raucpart} rw rootwait ${raucslot};
		saveenv;
	else
		echo "No valid RAUC slot found. Resetting tries to 3";
		setenv BOOT_A_LEFT 3;
		setenv BOOT_B_LEFT 3;
		saveenv;
		reset;
	fi;
	load ${devtype} ${devnum}:${distro_bootpart} ${loadaddr} /boot/fitImage && bootm;