summaryrefslogtreecommitdiff
path: root/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
diff options
context:
space:
mode:
authorLancelot Kao <lancelot.kao@fii-usa.com>2021-02-23 00:20:35 +0300
committerMohaimen Alsamarai <mohaimen.alsamarai@fii-na.com>2021-04-13 04:26:55 +0300
commit4357d53d395f5c4c8fed92c14f31de0e81959105 (patch)
treefd80777224ee031a0b3db41109f999f21f396b74 /meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
parent91f1926c9048f952f21f628fb47280f017c78de9 (diff)
downloadopenbmc-4357d53d395f5c4c8fed92c14f31de0e81959105.tar.xz
meta-fii/meta-kudo: support the bios update feature
1. add kudo-bios-update package to support bios update Signed-off-by: Lancelot Kao <lancelot.kao@fii-usa.com> Change-Id: Ic245828ed3bb0ddf6d7363e7c2c4d3b8b538aa88 Signed-off-by: XP Chen <xiao-peng.chen@fii-na.com> Signed-off-by: Mohaimen Alsamarai <Mohaimen.alsamarai@fii-na.com>
Diffstat (limited to 'meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh')
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh120
1 files changed, 120 insertions, 0 deletions
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
new file mode 100644
index 000000000..e42795f0c
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
@@ -0,0 +1,120 @@
+#!/bin/bash
+
+devpath="/sys/bus/i2c/devices/13-0077/driver"
+
+# set_gpio_ctrl
+# pin #, direction, high(1)/low(0)
+function set_gpio_ctrl() {
+ echo $1 > /sys/class/gpio/export
+ echo $2 > /sys/class//gpio/gpio$1/direction
+ echo $3 > /sys/class/gpio/gpio$1/value
+ echo $1 > /sys/class/gpio/unexport
+ sleep 1
+}
+
+function fwbios() {
+ KERNEL_FIU_ID="c0000000.spi"
+ KERNEL_SYSFS_FIU="/sys/bus/platform/drivers/NPCM-FIU"
+
+ # switch the SPI mux from Host to BMC
+ i2cset -y -f -a 13 0x76 0x10 0x01
+
+ # rescan the spi bus
+ if [ -d "${KERNEL_SYSFS_FIU}/${KERNEL_FIU_ID}" ]; then
+ echo "${KERNEL_FIU_ID}" > "${KERNEL_SYSFS_FIU}"/unbind
+ sleep 1
+ fi
+ echo "${KERNEL_FIU_ID}" > "${KERNEL_SYSFS_FIU}"/bind
+
+ # write to the mtd device
+ BIOS_MTD=$(cat /proc/mtd | grep "bios" | sed -n 's/^\(.*\):.*/\1/p')
+
+ if [ ! -f $1 ]; then
+ echo " Cannot find the" $1 "image file"
+ exit 1
+ fi
+
+ echo "Flashing BIOS @/dev/$BIOS_MTD"
+ flashcp -v $1 /dev/$BIOS_MTD
+ wait
+
+ # switch the SPI mux from BMC to Host
+ if [ -d "${KERNEL_SYSFS_FIU}/${KERNEL_FIU_ID}" ]; then
+ echo "${KERNEL_FIU_ID}" > "${KERNEL_SYSFS_FIU}"/unbind
+ fi
+ i2cset -y -f -a 13 0x76 0x10 0x00
+
+ if [[ $(find ${1} -type f -size +17156k 2>/dev/null) ]]; then
+ echo "Extracting the SCP from the image"
+ dd if=$1 bs=1024 skip=17156 count=256 of=/run/initramfs/myscp.img
+ fwscp /run/initramfs/myscp.img
+ fi
+ rm -f $1
+}
+
+
+function fwbmccpld() {
+ # BMC_JTAG_MUX_1 #218 0:BMC 1:MB
+ set_gpio_ctrl 218 out 0
+ loadsvf -d /dev/jtag0 -s $1 -m 0
+ wait
+ set_gpio_ctrl 218 out 1
+ rm -f $1
+}
+
+function fwmbcpld() {
+ # BMC_JTAG_MUX_1 #218 0:BMC 1:MB
+ # BMC_JTAG_SEL #164 0:BMC 1:CPU
+ set_gpio_ctrl 218 out 1
+ set_gpio_ctrl 164 out 1
+ loadsvf -d /dev/jtag0 -s $1 -m 0
+ wait
+ rm -f $1
+}
+
+function fwscp() {
+ # BMC_I2C_BACKUP_SEL #168 0:failover, 1:main
+ # BMC_CPU_EEPROM_I2C_SEL #85 0:BMC, 1:CPU
+ set_gpio_ctrl 168 out 1
+ set_gpio_ctrl 85 out 0
+ I2C_BUS_DEV=$(ls -l $devpath/"13-0077/" | grep channel-0 | awk '{ print $11}' | cut -c 8-)
+ ampere_eeprom_prog -b $I2C_BUS_DEV -s 0x50 -p -f $1
+ wait
+ set_gpio_ctrl 85 out 1
+ set_gpio_ctrl 168 out 1
+ rm -f $1
+}
+
+function fwscpback() {
+ # BMC_I2C_BACKUP_SEL #168 0:failover, 1:main
+ # BMC_CPU_EEPROM_I2C_SEL #85 0:BMC, 1:CPU
+ set_gpio_ctrl 168 out 0
+ set_gpio_ctrl 85 out 0
+ I2C_BUS_DEV=$(ls -l $devpath/"13-0077/" | grep channel-0 | awk '{ print $11}' | cut -c 8-)
+ ampere_eeprom_prog -b $I2C_BUS_DEV -s 0x50 -p -f $1
+ wait
+ set_gpio_ctrl 85 out 1
+ set_gpio_ctrl 168 out 1
+ rm -f $1
+}
+
+
+case $1 in
+ bios)
+ fwbios $2
+ ;;
+ bmccpld)
+ fwbmccpld $2
+ ;;
+ mbcpld)
+ fwmbcpld $2
+ ;;
+ scp)
+ fwscp $2
+ ;;
+ scpback)
+ fwscpback $2
+ ;;
+ *)
+ ;;
+esac