summaryrefslogtreecommitdiff
path: root/meta-fii
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
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')
-rw-r--r--meta-fii/meta-kudo/conf/machine/kudo.conf2
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update.bb33
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/config-bios.json19
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/phosphor-ipmi-flash-bios-update.service6
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb34
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.service10
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.sh27
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh120
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb25
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend3
10 files changed, 263 insertions, 16 deletions
diff --git a/meta-fii/meta-kudo/conf/machine/kudo.conf b/meta-fii/meta-kudo/conf/machine/kudo.conf
index f3a3757f63..a9df131644 100644
--- a/meta-fii/meta-kudo/conf/machine/kudo.conf
+++ b/meta-fii/meta-kudo/conf/machine/kudo.conf
@@ -20,7 +20,7 @@ OBMC_MACHINE_FEATURES += " \
obmc-host-ipmi \
"
-VIRTUAL-RUNTIME_obmc-fan-control = "phosphor-pid-control"
PREFERRED_PROVIDER_virtual/obmc-fan-control = "phosphor-pid-control"
PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-kudo-apps"
PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw = "phosphor-ipmi-ssif"
+PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-kudo-apps"
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update.bb b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update.bb
new file mode 100644
index 0000000000..b126bfc8cb
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Phosphor OpenBMC Kudo BIOS Firmware Upgrade Command"
+DESCRIPTION = "Phosphor OpenBMC Kudo BIOS Firmware Upgrade Comman Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+DEPENDS += "phosphor-ipmi-flash"
+RDEPENDS_${PN} += "libsystemd"
+RDEPENDS_${PN} += "bash"
+
+FILES_${PN} += "${datadir}/phosphor-ipmi-flash/config-bios.json"
+
+SRC_URI_append_kudo = " \
+ file://phosphor-ipmi-flash-bios-update.service \
+ file://config-bios.json \
+ "
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN}_append_kudo = " \
+ phosphor-ipmi-flash-bios-update.service \
+ "
+
+do_install () {
+ install -d ${D}${datadir}/phosphor-ipmi-flash
+ install -m 0644 ${WORKDIR}/config-bios.json ${D}${datadir}/phosphor-ipmi-flash
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/phosphor-ipmi-flash-bios-update.service ${D}${systemd_system_unitdir}
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/config-bios.json b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/config-bios.json
new file mode 100644
index 0000000000..de23823462
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/config-bios.json
@@ -0,0 +1,19 @@
+[{
+ "blob": "/flash/bios",
+ "handler": {
+ "type": "file",
+ "path": "/run/initramfs/bios-image"
+ },
+ "actions": {
+ "preparation": {
+ "type": "skip"
+ },
+ "verification": {
+ "type": "skip"
+ },
+ "update": {
+ "type": "systemd",
+ "unit": "phosphor-ipmi-flash-bios-update.service"
+ }
+ }
+}]
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/phosphor-ipmi-flash-bios-update.service b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/phosphor-ipmi-flash-bios-update.service
new file mode 100644
index 0000000000..1702153d7b
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-bios-update/phosphor-ipmi-flash-bios-update.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Phosphor-ipmi-flash update BIOS firmware service
+
+[Service]
+ExecStart=/usr/sbin/kudo-fw.sh bios /run/initramfs/bios-image
+Type=oneshot \ No newline at end of file
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb
new file mode 100644
index 0000000000..3f5a30ec6c
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Phosphor OpenBMC Kudo Firmware Upgrade Command"
+DESCRIPTION = "Phosphor OpenBMC Kudo Firmware Upgrade Comman Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+DEPENDS += "phosphor-ipmi-flash"
+RDEPENDS_${PN} += "libsystemd"
+RDEPENDS_${PN} += "bash"
+
+
+SRC_URI_append_kudo = " \
+ file://kudo-fw.sh \
+ file://kudo-fw-ver.service \
+ file://kudo-fw-ver.sh \
+ "
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN}_append_kudo = " \
+ kudo-fw-ver.service \
+ "
+
+do_install () {
+ install -d ${D}/${sbindir}
+ install -m 0755 ${WORKDIR}/kudo-fw.sh ${D}/${sbindir}/kudo-fw.sh
+ install -m 0755 ${WORKDIR}/kudo-fw-ver.sh ${D}/${sbindir}/kudo-fw-ver.sh
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/kudo-fw-ver.service ${D}${systemd_system_unitdir}
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.service b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.service
new file mode 100644
index 0000000000..24e21d2367
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Firmware Version Daemon
+
+[Service]
+RemainAfterExit=yes
+Type=oneshot
+ExecStart=/usr/sbin/kudo-fw-ver.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.sh
new file mode 100644
index 0000000000..2c502980a4
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.sh
@@ -0,0 +1,27 @@
+
+#!/bin/bash
+BMC_CPLD_VER_FILE="/run/cpld0.version"
+MB_CPLD_VER_FILE="/run/cpld1.version"
+ver=''
+
+function fw_rev() {
+ case $1 in
+ cpldb)
+ rsp=($(i2cget -y -f -a 13 0x76 0x00 i 5))
+ ver=$(printf '%d.%d.%d.%d' ${rsp[6]} ${rsp[5]} ${rsp[4]} ${rsp[3]})
+ ;;
+ cpldm)
+ I2C_BUS_DEV=$(readlink "/sys/bus/i2c/devices/4-0077/channel-2" | cut -c 8-)
+ rsp=($(i2cget -y -f -a $I2C_BUS_DEV 0x76 0x00 i 5))
+ ver=$(printf '%d.%d.%d.%d' ${rsp[6]} ${rsp[5]} ${rsp[4]} ${rsp[3]})
+ ;;
+ *)
+ ;;
+ esac
+}
+fw_rev cpldb
+echo "BMC CPLD version : ${ver}"
+echo "${ver}" > "${BMC_CPLD_VER_FILE}"
+fw_rev cpldm
+echo "MB CPLD version : ${ver}"
+echo "${ver}" > "${MB_CPLD_VER_FILE}"
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 0000000000..e42795f0c4
--- /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
diff --git a/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb b/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb
index be879455de..8601f96563 100644
--- a/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb
+++ b/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb
@@ -5,26 +5,27 @@ inherit packagegroup
PROVIDES = "${PACKAGES}"
PACKAGES = " \
- ${PN}-kudo-system \
- ${PN}-kudo-common-utils \
- "
+ ${PN}-kudo-system \
+ ${PN}-kudo-fw \
+ "
PROVIDES += "virtual/obmc-system-mgmt"
RPROVIDES_${PN}-kudo-system += "virtual-obmc-system-mgmt"
+RPROVIDES_${PN}-kudo-fw += "virtual-obmc-system-mgmt"
SUMMARY_${PN}-kudo-system = "KUDO System"
RDEPENDS_${PN}-kudo-system = " \
- google-ipmi-sys \
- google-ipmi-i2c \
- "
-
-SUMMARY_${PN}-kudo-common-utils = "KUDO common utils"
-RDEPENDS_${PN}-kudo-common-utils = " \
ipmitool \
- phosphor-webui \
- phosphor-host-postd \
+ ethtool \
+ memtester \
loadsvf \
obmc-console \
- phosphor-sel-logger \
+ usb-network \
+ "
+
+SUMMARY_${PN}-kudo-fw = "KUDO Firmware"
+RDEPENDS_${PN}-kudo-fw = " \
+ kudo-fw \
+ kudo-bios-update \
"
diff --git a/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend b/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend
index f0eb9724d4..dd5b10f2ad 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend
+++ b/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend
@@ -1,6 +1,3 @@
-OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " ipmitool"
-OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " ethtool"
-OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " loadsvf"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " google-ipmi-sys"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " google-ipmi-i2c"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-blobs"