#!/bin/sh
# Pogoplug Series 4 U-Boot Installer - r1
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>

echo "######################################"
echo "##"
echo "## Pogoplug Series 4 U-Boot Installer"
echo "##"
echo "######################################"
echo ""

echo "## PREPARATION "
echo "# Switching to /tmp..."
cd /tmp
echo "# Ensuring we're ready to proceed..."
killall hbwd

echo "# Checking board revision..."

BOARDVER=`/usr/local/cloudengines/bin/blparam | grep -e '^ceboardver=' | sed 's/^ceboardver=//'`
if [ "$BOARDVER" != "PPV4A3" -a "$BOARDVER" != "PPV4A1" ]
then
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
    echo "ABORTING!!! UNSUPPORTED MODEL"
    echo "==================================="
    echo "This installer is ONLY for Series 4"
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
    exit
fi

#######
## GET files
#######
echo "#############################"
echo "## RETRIEVING FILES "
echo "# Downloading U-Boot files.."
wget http://os.archlinuxarm.org/os/ppv4/uboot.bin.gz

echo "# Verifying MD5"
/usr/bin/md5sum /tmp/uboot.bin.gz > rfs.md5
GOODMD5="0c1c0cea79b5481afed7c3521c79d722"
RFSMD5=`grep $GOODMD5 rfs.md5 | cut -d' ' -f1`
if [ "$GOODMD5" != "$RFSMD5" ]; then
	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
	echo "MD5 verification Failure."
	echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
	rm -f uboot.* rfs.md5
	exit
fi

echo "# Decompressing"
gunzip uboot.bin.gz

echo ""
echo "#############################"
echo "## FLASHING NAND"
echo "# Erasing mtd0 @ 0x100000 for 4 erase blocks (new U-Boot location)"
/usr/sbin/flash_erase /dev/mtd0 0x100000 4

echo "# Flashing U-Boot.."
/usr/sbin/nandwrite -p -s 0x100000 /dev/mtd0 /tmp/uboot.bin

echo "# Done"
echo ""

echo "#############################"
echo "## UPDATING ENVIRONMENT"
/usr/local/cloudengines/bin/blparam arcNumber=3960 > /dev/null
/usr/local/cloudengines/bin/blparam mainlineLinux=yes > /dev/null
/usr/local/cloudengines/bin/blparam bootcmd='if usb start; then run alarm_boot; else nand read 0x800000 0x100000 0x73d0c; go 0x800000; fi' > /dev/null
/usr/local/cloudengines/bin/blparam alarm_boot='ide reset; run alarm_revert; if ide part 0; then run alarm_ide; else setenv isDisk no; fi; run alarm_usb' > /dev/null
/usr/local/cloudengines/bin/blparam alarm_revert='if fatls usb 0:1 /revert; then setenv mainlineLinux no; setenv arcNumber; setenv bootcmd run boot_nand; saveenv; reset; fi' > /dev/null
/usr/local/cloudengines/bin/blparam alarm_args='setenv bootargs console=ttyS0,115200 root=$device rootwait rootfstype=ext3' > /dev/null
/usr/local/cloudengines/bin/blparam alarm_which='if test $isDisk = yes; then setenv device /dev/sdb1; else setenv device /dev/sda1; fi' > /dev/null
/usr/local/cloudengines/bin/blparam alarm_ide='if ext2load ide 0:1 0x800000 /boot/uImage; then setenv device /dev/sda1; run alarm_args; bootm 0x800000; else setenv isDisk yes; fi' > /dev/null
/usr/local/cloudengines/bin/blparam alarm_usb='if ext2load usb 0:1 0x800000 /boot/uImage; then run alarm_which; run alarm_args; bootm 0x800000; fi' > /dev/null


echo ""
echo "#############################"	
echo "## U-Boot install complete!"
