setenv stdout serial,vga
echo "check U-Boot" ;
setenv offset 0x400
if ${fs}load ${dtype} ${disk}:1 12000000 u-boot.imx || ${fs}load ${dtype} ${disk}:1 12000000 u-boot.nopadding ; then
      echo "read $filesize bytes from SD card" ;
      if sf probe || sf probe || \
	 sf probe 1 27000000 || sf probe 1 27000000 ; then
	   echo "probed SPI ROM" ;
	   if sf read 0x12400000 $offset $filesize ; then
	       if cmp.b 0x12000000 0x12400000 $filesize ; then
		   echo "------- U-Boot versions match" ;
	       else
		   echo "Need U-Boot upgrade" ;
		   echo "Program in 5 seconds" ;
		   for n in 5 4 3 2 1 ; do
			echo $n ;
			sleep 1 ;
		   done
		   echo "erasing" ;
		   sf erase 0 0xC0000 ;
		   # two steps to prevent bricking
		   echo "programming" ;
		   sf write 0x12000000 $offset $filesize ;
		   echo "verifying" ;
		   if sf read 0x12400000 $offset $filesize ; then
		       if cmp.b 0x12000000 0x12400000 $filesize ; then
			   while echo "---- U-Boot upgraded. reset" ; do
				sleep 120
			   done
		       else
			   echo "Read verification error" ;
		       fi
		   else
			echo "Error re-reading EEPROM" ;
		   fi
	       fi
	   else
	       echo "Error reading boot loader from EEPROM" ;
	   fi
      else
	   echo "Error initializing EEPROM" ;
      fi ;
else
     echo "No U-Boot image found on SD card" ;
fi
