echo "checking for U-Boot upgrades..";
setenv offset 0x400
if load ${dtype} ${disk}:1 12000000 /boot/u-boot.imx; then
  echo "  found u-boot.imx $filesize bytes)";
  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 "  no upgrade needed";
      else
        echo "  need U-Boot upgrade, flashing in 5 seconds..";
        for n in 5 4 3 2 1; do
          echo $n;
          sleep 1;
        done
        echo "  erasing flash..";
        sf erase 0 0xC0000;
        # two steps to prevent bricking
        echo "  writing flash..";
        sf write 0x12000000 $offset $filesize;
        echo "  verifying flash..";
        if sf read 0x12400000 $offset $filesize; then
          if cmp.b 0x12000000 0x12400000 $filesize; then
            echo "---- U-Boot upgraded. resetting..";
            reset;
          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

setenv bootargs
setenv nextcon 0;

if hdmidet ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=hdmi,1280x720M@60,if=RGB24
	setenv fbmem "fbmem=28M";
	setexpr nextcon $nextcon + 1
else
	echo "------ no HDMI monitor";
fi

i2c dev 2
if i2c probe 0x04 ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,LDB-XGA,if=RGB666
	if test "0" -eq $nextcon; then
		setenv fbmem "fbmem=10M";
	else
		setenv fbmem ${fbmem},10M
	fi
	setexpr nextcon $nextcon + 1
else
	echo "------ no Freescale display";
fi

if i2c probe 0x38 ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,1024x600M@60,if=RGB666
	if test "0" -eq $nextcon; then
		setenv fbmem "fbmem=10M";
	else
		setenv fbmem ${fbmem},10M
	fi
	setexpr nextcon $nextcon + 1
else
	echo "------ no 1024x600 display";
fi

if i2c probe 0x48 ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=lcd,CLAA-WVGA,if=RGB666
	if test "0" -eq $nextcon; then
		setenv fbmem "fbmem=10M";
	else
		setenv fbmem ${fbmem},10M
	fi
	setexpr nextcon $nextcon + 1
else
	echo "------ no 800x480 display";
fi

while test "3" -ne $nextcon ; do
	setenv bootargs $bootargs video=mxcfb${nextcon}:off ;
	setexpr nextcon $nextcon + 1 ;
done

setenv bootargs $bootargs $fbmem

part uuid ${dtype} ${disk}:1 uuid

setenv bootargs $bootargs console=ttymxc1,115200 vmalloc=400M root=PARTUUID=${uuid} rw rootwait consoleblank=0

setenv fdtfile imx6q-nitrogen6x.dtb
load ${dtype} ${disk}:1 10800000 /boot/vmlinuz-linux-libre && load ${dtype} ${disk}:1 11000000 /boot/dtbs/linux-libre/${fdtfile} && bootz 10800000 - 11000000

load ${dtype} ${disk}:1 10800000 /boot/uImage && bootm 10800000
