auto_recovery=if test x${upgrade_stage} = x0; then echo Trying to boot system after upgrade... && setenv upgrade_stage 1 && saveenv; elif test x${upgrade_stage} = x1; then echo Revert to previous firmware after unsuccessful upgrade... && if test x${firmware} = x1; then setenv firmware 2; else setenv firmware 1; fi; setenv upgrade_stage && setenv first_boot && saveenv && reset; else exit 0; fi
baudrate=115200
bitstream_addr=0x2100000
bitstream_recovery_off=0x5200000
bitstream_size=0x100000
bootcmd=run $modeboot
bootdelay=1
bootenv=uEnv.txt
button_ip=37
factory_reset=yes
factory_reset_delay=0xa
fdt_high=0x7FFFFFF
firmware=1
firmware_select=if test x${firmware} = x1; then setenv bitstream fpga1 && setenv firmware_name firmware1 && setenv firmware_mtd 7; else setenv bitstream fpga2 && setenv firmware_name firmware2 && setenv firmware_mtd 8; fi
first_boot=yes
fit_image=fit.itb
fpga_image=system.bit.gz
initrd_high=0x7FFFFFF
led_green=36
led_red=35
load_addr=0x2000000
miner_cfg_size=0x20000
mtdids=nand0=pl35x-nand
mtdparts=mtdparts=pl35x-nand:8m(boot),12m(boot-failover),2m(fpga1),2m(fpga2),512k(uboot_env),512k(miner_cfg),87m(recovery),57m(firmware1),57m(firmware2),30m(factory)
nandboot=echo Copying FIT from NAND flash to RAM... && if test x${recovery} = xyes; then recovery=${recovery}; recovery_mtdparts=${recovery_mtdparts}; env set recovery; env set recovery_mtdparts; saveenv; fi; test x${first_boot} != xyes && run uenv_load; test x${factory_reset} = xyes && run uenv_reset; test x${sd_boot} = xyes && run sdboot; test x${recovery} = xyes && run nandboot_recovery; run firmware_select && run auto_recovery && setenv bootargs console=ttyPS0,115200 noinitrd ubi.mtd=${firmware_mtd} ubi.block=0,1 root=/dev/ubiblock0_1 r rootfstype=squashfs rootwait ${mtdparts} earlyprintk && mw.l 0xF8000008 0x0000DF0D && mw.l 0xF8000170 0x00400400 && mw.l 0xF8000004 0x0000767B && nand read ${load_addr} ${bitstream} ${bitstream_size} && unzip ${load_addr} ${bitstream_addr} && fpga loadb 0 ${bitstream_addr} ${bitstream_size} && run nandboot_mode_select && ubi part ${firmware_name} && ubi read ${load_addr} kernel && gpio set ${led_green}; bootm ${load_addr}
nandboot_mode_select=count=0; while gpio input ${button_ip}; do sleep 1; setexpr count ${count} + 1; itest ${count} >= ${recovery_delay} && gpio toggle ${led_green}; if itest ${count} >= ${factory_reset_delay}; then gpio set ${led_green}; gpio set ${led_red}; run uenv_reset; fi; done; gpio set ${led_green}; itest ${count} >= ${recovery_delay} && run nandboot_recovery; gpio clear ${led_green}; exit 0
nandboot_recovery=echo Running recovery process... && test -n ${recovery_mtdparts} || setenv recovery_mtdparts ${mtdparts}; setenv bootargs console=ttyPS0,115200 root=/dev/ram0 r rootfstype=squashfs ${recovery_mtdparts} earlyprintk && nand read ${load_addr} ${bitstream_recovery_off} ${bitstream_size} && unzip ${load_addr} ${bitstream_addr} && fpga loadb 0 ${bitstream_addr} ${bitstream_size} && bootm ${recovery_addr}
recovery_addr=0x4100000
recovery_delay=0x3
sdboot=echo Copying FIT from SD to RAM... && setenv recovery_mtdparts ${mtdparts},8m@0x4800000(antminer_configs); run uenv_load; test -n ${bootargs} || setenv bootargs console=ttyPS0,115200 root=/dev/ram0 r rootfstype=squashfs ${recovery_mtdparts} earlyprintk; if test -n ${sd_uenvcmd}; then echo Running sd_uenvcmd... && run sd_uenvcmd; fi; mw.l 0xF8000008 0x0000DF0D && mw.l 0xF8000170 0x00400400 && mw.l 0xF8000004 0x0000767B && load mmc 0 ${load_addr} ${fpga_image} && unzip ${load_addr} ${bitstream_addr} && fpga loadb 0 ${bitstream_addr} ${bitstream_size} && load mmc 0 ${load_addr} ${fit_image} && gpio set ${led_green}; bootm ${load_addr}
uenv_load=load mmc 0 ${load_addr} ${bootenv} && echo Loaded environment from ${bootenv} && env import -t ${load_addr} ${filesize}
uenv_reset=echo Resetting miner configuration... && nand erase.part uboot_env && reset
