#!/bin/sh
export PATH=/bin:/sbin:/usr/sbin:/usr/bin
. /sbin/platform-functions.sh

tvp_eeprom=/var/run/mainboardideeprom.dat
assembly_id=`get_ideeprom_assembly_id $tvp_eeprom`

ec_fpga_fail=0
re_fpga_fail=0

# Remove the previous log
rm -f /var/log/firmware_upgrade.log

case $assembly_id in
    0cc3)
        /sbin/rmmod lpc_ich
        /sbin/insmod /usr/sbin/pch_gpio.ko
        echo "Upgrade XMB EC FPGA" >> /var/log/firmware_upgrade.log
        isp -plat xellent /usr/sbin/xellent_ec_full_v2_5.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade XMB EC FPGA" >> /var/log/firmware_upgrade.log
            isp -plat xellent /usr/sbin/xellent_ec_full_v2_5.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for EC FPGA main board" | tee -a /var/log/firmware_upgrade.log
                ec_fpga_fail=1
            else
                echo "EC-FPGA upgrade passed on main board" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "EC-FPGA upgrade passed on main board" >> /var/log/firmware_upgrade.log
        fi
        echo "Upgrade XDB EC FPGA" >> /var/log/firmware_upgrade.log
        isp -plat xellent -m /usr/sbin/xellent_ec_full_v2_5.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade XDB EC FPGA" >> /var/log/firmware_upgrade.log
            isp -plat xellent -m /usr/sbin/xellent_ec_full_v2_5.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for EC FPGA mezz board" | tee -a /var/log/firmware_upgrade.log
                ec_fpga_fail=1
            else
                echo "EC-FPGA upgrade passed on mezz board" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "EC-FPGA upgrade passed on mezz board" >> /var/log/firmware_upgrade.log
        fi
        # Program RE-FPGA
        echo "Upgrade RE-FPGA" >> /var/log/firmware_upgrade.log
        isp -plat xellent -re /usr/sbin/xellent_re_fpga_v2_6.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade RE-FPGA" >> /var/log/firmware_upgrade.log
            isp -plat xellent -re /usr/sbin/xellent_re_fpga_v2_6.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for RE FPGA" | tee -a /var/log/firmware_upgrade.log
                re_fpga_fail=1
            else
                echo "RE-FPGA upgrade passed" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "RE-FPGA upgrade passed" >> /var/log/firmware_upgrade.log
        fi
        # Program PORT-FPGA
        echo "Upgrade XMB PORT FPGA" >> /var/log/firmware_upgrade.log
        isp -plat xellent /usr/sbin/xellent_port_fpga_v2_1.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade XMB PORT FPGA" >> /var/log/firmware_upgrade.log
            isp -plat xellent /usr/sbin/xellent_port_fpga_v2_1.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for XMB PORT FPGA" | tee -a /var/log/firmware_upgrade.log
            else
                echo "XMB PORT-FPGA upgrade passed" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "XMB PORT-FPGA upgrade passed" >> /var/log/firmware_upgrade.log
        fi
        echo "Upgrade XDB PORT FPGA" >> /var/log/firmware_upgrade.log
        isp -plat xellent -m /usr/sbin/xellent_port_fpga_v2_1.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade XDB PORT FPGA" >> /var/log/firmware_upgrade.log
            isp -plat xellent -m /usr/sbin/xellent_port_fpga_v2_1.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for XDB PORT FPGA" | tee -a /var/log/firmware_upgrade.log
            else
                echo "XDB PORT-FPGA upgrade passed" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "XDB PORT-FPGA upgrade passed" >> /var/log/firmware_upgrade.log
        fi
        # Program I2CS-CPLD
        echo "Upgrade XMB I2CS CPLD" >> /var/log/firmware_upgrade.log
        isp -plat xellent -i2cs_0 /usr/sbin/xellent_i2cs_rev0x15.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade XMB I2CS CPLD" >> /var/log/firmware_upgrade.log
            isp -plat xellent -i2cs_0 /usr/sbin/xellent_i2cs_rev0x15.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for XMB I2CS CPLD" | tee -a /var/log/firmware_upgrade.log
            else
                echo "XMB I2CS CPLD upgrade passed" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "XMB I2CS CPLD upgrade passed" >> /var/log/firmware_upgrade.log
        fi
        echo "Upgrade XDB I2CS CPLD" >> /var/log/firmware_upgrade.log
        isp -plat xellent -i2cs_1 /usr/sbin/xellent_i2cs_rev0x15.vme
        if [ $? -ne 0 ];then
            echo "RETRY Upgrade XDB I2CS CPLD" >> /var/log/firmware_upgrade.log
            isp -plat xellent -i2cs_1 /usr/sbin/xellent_i2cs_rev0x15.vme
            if [ $? -ne 0 ];then
                echo "ERROR: isp failed for XDB I2CS CPLD" | tee -a /var/log/firmware_upgrade.log
            else
                echo "XDB I2CS CPLD upgrade passed" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "XDB I2CS CPLD upgrade passed" >> /var/log/firmware_upgrade.log
        fi
        ;;
    0c75)
        # Program the EC FPGA
        isp -plat elit /usr/sbin/elit_ec_v2.3_port_v1.17_spansion.vme
        if [ $? -ne 0 ];then
            isp -plat elit /usr/sbin/elit_ec_v2.3_port_v1.17.vme
            if [ $? -ne 0 ];then
                echo "isp failed for EC FPGA" >> /var/log/firmware_upgrade.log
                ec_fpga_fail=1
            else
                echo "EC & Port FPGA upgrade passed" >> /var/log/firmware_upgrade.log
            fi
        else
            echo "EC & Port FPGA upgrade passed" >> /var/log/firmware_upgrade.log
        fi

        # Program the RE FPGA
        isp -plat elit -re /usr/sbin/elit_re_v2.4.vme
        if [ $? -ne 0 ];then
            echo "isp failed for RE FPGA" >> /var/log/firmware_upgrade.log
            re_fpga_fail=1
        else
            echo "RE FPGA upgrade passed" >> /var/log/firmware_upgrade.log
        fi
        ;;
    *)
        ;;

esac
