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

/*
 * Copyright (C) 2017 Armadeus Systems
 */

/* Environment is stored in the eMMC boot partition */

env_version=100
consoledev=ttymxc0
board_name=opos6ul
fdt_addr=0x88000000
fdt_high=0xffffffff
fdt_name=opos6uldev
initrd_high=0xffffffff
ip_dyn=yes
stdin=serial
stdout=serial
stderr=serial
mmcdev=0
mmcpart=2
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait
kernelimg=opos6ul-linux.bin
splashpos=0,0
splashimage=CONFIG_SYS_LOAD_ADDR
check_env=if test -n ${flash_env_version};
	then env default env_version;
	else env set flash_env_version ${env_version}; env save;
	fi;
	if itest ${flash_env_version} != ${env_version}; then
		echo "*** Warning - Environment version
		 change suggests: run flash_reset_env; reset";
		env default flash_reset_env;
	else exit; fi; 
flash_reset_env=env default -f -a && saveenv &&
	echo Environment variables erased!
download_uboot_spl=tftpboot ${loadaddr} ${board_name}-u-boot.spl
flash_uboot_spl=
	if mmc dev 0 1; then
		setexpr sz ${filesize} / 0x200;
		setexpr sz ${sz} + 1;
		if mmc write ${loadaddr} 0x2 ${sz}; then
			echo Flashing of U-Boot SPL succeed;
		else echo Flashing of U-Boot SPL failed;
		fi;
	fi;
download_uboot_img=tftpboot ${loadaddr} ${board_name}-u-boot.img
flash_uboot_img=
	if mmc dev 0 1; then
		setexpr sz ${filesize} / 0x200;
		setexpr sz ${sz} + 1;
		if mmc write ${loadaddr} 0x8a ${sz}; then
			echo Flashing of U-Boot image succeed;
		else echo Flashing of U-Boot image failed;
		fi;
	fi;
update_uboot=run download_uboot_spl flash_uboot_spl
	download_uboot_img flash_uboot_img
download_kernel=tftpboot ${loadaddr} ${kernelimg}
flash_kernel=
	if ext4write mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${kernelimg} ${filesize}; then
		echo kernel update succeed;
		else echo kernel update failed;
	fi;
update_kernel=run download_kernel flash_kernel
download_dtb=tftpboot ${fdt_addr} imx6ul-${fdt_name}.dtb
flash_dtb=
	if ext4write mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/imx6ul-${fdt_name}.dtb ${filesize}; then
		echo dtb update succeed;
		else echo dtb update in failed;
	fi;
update_dtb=run download_dtb flash_dtb
download_rootfs=tftpboot ${loadaddr} ${board_name}-rootfs.ext4
flash_rootfs=
	if mmc dev 0 0; then
		setexpr nbblocks ${filesize} / 0x200;
		setexpr nbblocks ${nbblocks} + 1;
		if mmc write ${loadaddr} 0x40800 ${nbblocks}; then
			echo Flashing of rootfs image succeed;
		else echo Flashing of rootfs image failed;
		fi;
	fi;
update_rootfs=run download_rootfs flash_rootfs
flash_failsafe=
	if mmc dev 0 0; then
		setexpr nbblocks ${filesize} / 0x200;
		setexpr nbblocks ${nbblocks} + 1;
		if mmc write ${loadaddr} 0x800 ${nbblocks}; then
			echo Flashing of rootfs image in failsafe partition succeed;
		else echo Flashing of rootfs image in failsafe partition failed;
		fi;
	fi;
update_failsafe=run download_rootfs flash_failsafe
download_userdata=tftpboot ${loadaddr} ${board_name}-user_data.ext4
flash_userdata=
	if mmc dev 0 0; then
		setexpr nbblocks ${filesize} / 0x200;
		setexpr nbblocks ${nbblocks} + 1;
		if mmc write ${loadaddr} 0 ${nbblocks}; then
			echo Flashing of user_data image succeed;
		else echo Flashing of user_data image failed;
		fi;
	fi;
update_userdata=run download_userdata flash_userdata; mmc rescan
erase_userdata=
	if mmc dev 0 0; then
		echo Erasing eMMC User Data partition, no way out...;
		mw ${loadaddr} 0 0x200000;
		mmc write ${loadaddr} 0 0x1000;
		mmc write ${loadaddr} 0x800 0x1000;
		mmc write ${loadaddr} 0x40800 0x1000;
		mmc write ${loadaddr} 0x440800 0x1000;
	fi;
	mmc rescan
update_all=run update_rootfs update_uboot
initargs=setenv bootargs console=${consoledev},${baudrate} ${extrabootargs}
addipargs=setenv bootargs ${bootargs}
	ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off
addmmcargs=setenv bootargs ${bootargs} root=${mmcroot}
	rootfstype=${mmcrootfstype}
emmcboot=run initargs; run addmmcargs;
	load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${kernelimg} &&
	load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/imx6ul-${fdt_name}.dtb &&
	bootz ${loadaddr} - ${fdt_addr};
emmcsafeboot=setenv mmcpart 1; setenv mmcroot /dev/mmcblk0p1 ro; run emmcboot;
addnfsargs=setenv bootargs ${bootargs} root=/dev/nfs rw
	nfsroot=${serverip}:${rootpath}
nfsboot=run initargs; run addnfsargs addipargs;
	nfs ${loadaddr} ${serverip}:${rootpath}/boot/${kernelimg} &&
	nfs ${fdt_addr} ${serverip}:${rootpath}/boot/imx6ul-${fdt_name}.dtb &&
	bootz ${loadaddr} - ${fdt_addr};
