blob: b21c5d2ead53badb3b002273cf113109f8e6e7ad [file] [log] [blame]
#!/bin/bash
# shellcheck source=meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
source /usr/libexec/fb-common-functions
# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
source /usr/libexec/phosphor-state-manager/power-cmd
IMAGE_FILE=$1
# SPI Get Link name
SPI_DEV=$(find /sys/bus/spi/devices/ -type l -exec sh -c 'readlink "$1" | grep -q "1e631000.spi" && basename "$1"' _ {} \;)
SPI_PATH="/sys/bus/spi/drivers/spi-nor"
set_gpio_to_bmc()
{
echo "switch bios GPIO to bmc"
# bmc-spi-mux-select-0: 1:BMC / 0:CPU
set_gpio bmc-spi-mux-select-0 1
return 0
}
set_gpio_to_cpu()
{
echo "switch bios GPIO to CPU"
# bmc-spi-mux-select-0: 1:BMC / 0:CPU
set_gpio bmc-spi-mux-select-0 0
return 0
}
echo "Bios upgrade started at $(date)"
#Power off host server.
echo "Power off host server"
power_off
sleep 15
if [ "$(power_status)" != "off" ];
then
echo "Host server didn't power off"
echo "Bios upgrade failed"
exit 1
fi
echo "Host server powered off"
#Flip GPIO to access SPI flash used by host.
echo "Set GPIO $GPIO to access SPI flash from BMC used by host"
set_gpio_to_bmc
#Bind spi driver to access flash
echo "bind aspeed-smc spi driver"
echo -n "$SPI_DEV" > "$SPI_PATH"/bind
sleep 1
#Flashcp image to device.
if [ -e "$IMAGE_FILE" ];
then
echo "Bios image is $IMAGE_FILE"
for d in mtd6 mtd7 ; do
if [ -e "/dev/$d" ]; then
mtd=$(cat /sys/class/mtd/$d/name)
if [ "$mtd" == "pnor" ]; then
echo "Flashing bios image to $d..."
if flashcp -v "$IMAGE_FILE" /dev/$d; then
echo "bios updated successfully..."
else
echo "bios update failed..."
fi
break
fi
echo "$d is not a pnor device"
fi
echo "$d not available"
done
else
echo "Bios image $IMAGE_FILE doesn't exist"
fi
#Unbind spi driver
sleep 1
echo "Unbind aspeed-smc spi driver"
echo -n "$SPI_DEV" > "$SPI_PATH"/unbind
sleep 10
#Flip GPIO back for host to access SPI flash
echo "Set GPIO $GPIO back for host to access SPI flash"
set_gpio_to_cpu
sleep 5
echo "Please do sled cycle."