#include <env/ti/ti_common.env>
#include <env/ti/mmc.env>
#include <env/ti/k3_dfu.env>

name_kern=Image
console=ttyS2,115200n8
args_all=setenv optargs earlycon=ns16550a,mmio32,0x02800000 ${mtdparts}
run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}

boot_targets=mmc1 mmc0 usb pxe dhcp
boot=mmc
mmcdev=1
bootpart=1:2
bootdir=/boot
rd_spec=-

args_usb=run finduuid;setenv bootargs console=${console}
	${optargs}
	root=PARTUUID=${uuid} rw
	rootfstype=${mmcrootfstype}
init_usb=run args_all args_usb
get_fdt_usb=load usb ${bootpart} ${fdtaddr} ${bootdir}/${name_fdt}
get_overlay_usb=
	fdt address ${fdtaddr};
	fdt resize 0x100000;
	for overlay in $name_overlays;
	do;
	load usb ${bootpart} ${dtboaddr} ${bootdir}/${overlay} && fdt apply
	${dtboaddr};
	done;
get_kern_usb=load usb ${bootpart} ${loadaddr}
	${bootdir}/${name_kern}
get_fit_usb=load usb ${bootpart} ${addr_fit}
	${bootdir}/${name_fit}
usbboot=setenv boot usb;
	setenv bootpart 0:2;
	usb start;
	run init_usb;
	run get_kern_usb;
	run get_fdt_usb;
	run run_kern;
