/* 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
videomode=video=ctfb:x:800,y:480,depth:18,pclk:33033,le:96,ri:96,up:20,lo:21,hs:64,vs:4,sync:0,vmode:0
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};
