loadaddr=0x82000000
kernel_addr_r=0x82000000
fdtaddr=0x88000000
dtboaddr=0x89000000
fdt_addr_r=0x88000000
fdtoverlay_addr_r=0x89000000
rdaddr=0x88080000
ramdisk_addr_r=0x88080000
scriptaddr=0x80000000
pxefile_addr_r=0x80100000
bootm_size=0x10000000
boot_fdt=try

mmcrootfstype=ext4 rootwait
finduuid=part uuid ${boot} ${bootpart} uuid
args_mmc=run finduuid;setenv bootargs console=${console}
	${optargs}
	root=PARTUUID=${uuid} rw
	rootfstype=${mmcrootfstype}
loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
bootscript=echo Running bootscript from mmc${mmcdev} ...;
	source ${loadaddr}
bootenvfile=uEnv.txt
importbootenv=echo Importing environment from mmc${mmcdev} ...;
	env import -t ${loadaddr} ${filesize}
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
envboot=mmc dev ${mmcdev};
	if mmc rescan; then
		echo SD/MMC found on device ${mmcdev};
		if run loadbootscript; then
			run bootscript;
		else
			if run loadbootenv; then
				echo Loaded env from ${bootenvfile};
				run importbootenv;
			fi;
			if test -n $uenvcmd; then
				echo Running uenvcmd ...;
				run uenvcmd;
			fi;
		fi;
	fi;
mmcloados=
	if test ${boot_fdt} = yes || test ${boot_fdt} = try; then
		if run loadfdt; then
			bootz ${loadaddr} - ${fdtaddr};
		else
			if test ${boot_fdt} = try; then
				bootz;
			else
				echo WARN: Cannot load the DT;
			fi;
		fi;
	else
		bootz;
	fi;
mmcboot=mmc dev ${mmcdev};
	devnum=${mmcdev};
	devtype=mmc;
	if mmc rescan; then
		echo SD/MMC found on device ${mmcdev};
		if run loadimage; then
			run args_mmc;
			if test ${boot_fit} -eq 1; then
				run run_fit;
			else
				run mmcloados;
			fi;
		fi;
	fi;

default_device_tree=k3-am625-sk.dtb
findfdt=
	setenv name_fdt ${default_device_tree};
	setenv fdtfile ${name_fdt}
name_kern=Image
console=ttyS2,115200n8
args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000
	${mtdparts}
run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}

boot=mmc
mmcdev=1
bootpart=1:2
bootdir=/boot
rd_spec=-
init_mmc=run args_all args_mmc
get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${name_fdt}
get_overlay_mmc=
	fdt address ${fdtaddr};
	fdt resize 0x100000;
	for overlay in $name_overlays;
	do;
	load mmc ${bootpart} ${dtboaddr} ${bootdir}/${overlay} &&
	fdt apply ${dtboaddr};
	done;
get_kern_mmc=load mmc ${bootpart} ${loadaddr}
	${bootdir}/${name_kern}
get_fit_mmc=load mmc ${bootpart} ${addr_fit}
	${bootdir}/${name_fit}
partitions=name=rootfs,start=0,size=-,uuid=${uuid_gpt_rootfs}

splashfile=ti.gz
splashimage=0x82000000
splashpos=m,m
splashsource=mmc
