summaryrefslogtreecommitdiffstats
path: root/meta-qualcomm/meta-centriq2400-rep/recipes-phosphor/socupdate/files/socupdate.sh
blob: 67d70633970e488592b85e05e77a783b2b030f8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh -e
# SOC update tool, need two parameter(soc update file name and TFTP ip)

if [ ! -n "$1" -o ! -n "$2" ] ;then
    echo "Please enter SOC-ImageName and TFTP-IP."
    echo "Format: socupdate.sh FileName IP"
    echo "Example: socupdate.sh 0ACJAXXX.ROM 192.168.1.1"
    exit
fi

echo "SOC update start."

echo "Check BMC status."
checkbmc='gpioutil -p Q4'
if $checkbmc = "1"; then
    echo "BMC is ready."
else
    echo "BMC isn't ready."
    exit
fi

echo "Check SOC image does it exist."
cd /tmp/
FILEEXIST=0
if [ -f "/tmp/$1" ]; then
    GETFILE=`du -k $1 | awk '{print $1}'`
    if [ "$GETFILE" -eq "65536" ]; then
        FILEEXIST=1
        echo "SOC image is exist."
    else
        FILEEXIST=0
    fi
fi

if [ $FILEEXIST -eq 0 ]; then
    echo "Get SOC image from TFTP server."
    echo "Please wait a few minutes."
    tftp -g -r $1 $2 &
    sleep 2
    LENGTH=0
    ERRCOUNT=0
    while true
    do
        echo -ne "\r["
        usleep 500000
        while [ $LENGTH -le 30 ]
        do
                usleep 500000
                echo -n ">"
                LENGTH=$(($LENGTH+1))
                if [ -f "/tmp/$1" ]; then
                    GETFILE=`du -k $1 | awk '{print $1}'`
                    if [ $GETFILE -eq 65536 ]; then
                        echo -en "\r"
                        echo -en "--- Image download completed --- \n"
                        usleep 1000000
                        break 2
                    fi
                else
                    ERRCOUNT=$(($ERRCOUNT+1))
                    if [ $ERRCOUNT -le 10 ]; then
                        echo -en "\r"
                        echo -en "SOC-ImageName or TFTP-IP is ERROR. \n"
                        usleep 500000
                        exit
                    fi
                fi
        done
        echo -n "]"
        LENGTH=0
        usleep 500000
        echo -en "\r                                "
    done
fi
sleep 3

echo "Switch the host SPI bus to BMC."
cmd='gpioutil -p C7 -v 1'
if $cmd 1>/dev/null 2>&1; then
    echo "Switch completed."
else
    echo "Switch failed."
fi
echo "Load the ASpeed SMC driver"
echo 1e630000.flash-controller > /sys/bus/platform/drivers/aspeed-smc/bind
sleep 2
chassisstate=$(obmcutil chassisstate | awk -F. '{print $NF}')
echo "---Current Chassisstate $chassisstate---"
if [ "$chassisstate" == 'On' ];
then
    echo "---Chassis on turning it off---"
    obmcutil chassisoff
    sleep 10
fi

echo "Flashcp to update SOC."
echo "Please wait a few minutes."
flashcp -v /tmp/$1 /dev/mtd6
sleep 3

echo "Switch the host SPI bus to HOST."
cmd1='gpioutil -p C7 -v 0'
if $cmd1 1>/dev/null 2>&1; then
    echo "Switch completed."
else
    echo "Switch failed."
fi
echo "unLoad the ASpeed SMC driver"
echo 1e630000.flash-controller > /sys/bus/platform/drivers/aspeed-smc/unbind
echo -ne "SOC update steps is complete.\n"
if [ "$chassisstate" == 'On' ];
then
	echo "5 sec later will be power-on."
	echo "If wantn't power-on, please CTRL + C leave script."
	WAITSEC=5
	while [ $WAITSEC -ge 0 ]
	do
        echo -n "Countdown seconds:$WAITSEC"
        sleep 1
        echo -en "\r"
        WAITSEC=$(($WAITSEC-1))
        if [ $WAITSEC -eq 0 ]; then
            echo -en "\r"
            echo -en "--- Power-on ---       \n"
            obmcutil chassison
            break 1
        fi
	done
fi
OpenPOWER on IntegriCloud