summaryrefslogtreecommitdiff
path: root/meta-fii/meta-kudo
diff options
context:
space:
mode:
Diffstat (limited to 'meta-fii/meta-kudo')
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb81
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweroff.service12
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweron.service10
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-force-reset.service11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset.service10
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown.service11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh117
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw-ver.sh4
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh82
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh27
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh45
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb10
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend3
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager/chassis_capabilities.override.yml23
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager_%.bbappend2
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json27
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend3
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-cycle.service8
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-poweroff.service8
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-reset.service8
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service18
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend9
24 files changed, 529 insertions, 22 deletions
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
new file mode 100644
index 000000000..affbcf727
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
@@ -0,0 +1,81 @@
+SUMMARY = "Ampere Computing LLC Host Control Implementation"
+DESCRIPTION = "A host control implementation suitable for Ampere Computing LLC's systems"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+S = "${WORKDIR}"
+
+SRC_URI = "file://ampere-host-shutdown.service \
+ file://ampere-host-reset.service \
+ file://ampere_power_util.sh \
+ file://ampere-chassis-poweroff.service \
+ file://ampere-chassis-poweron.service \
+ file://ampere-host-reset-ack.service \
+ file://ampere-host-force-reset.service \
+ file://ampere-host-power-cycle.service \
+ "
+
+DEPENDS = "systemd"
+RDEPENDS_${PN} = "bash"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = " \
+ ampere-host-shutdown.service \
+ ampere-host-reset.service \
+ ampere-chassis-poweroff.service \
+ ampere-chassis-poweron.service \
+ ampere-host-reset-ack.service \
+ ampere-host-force-reset.service \
+ ampere-host-power-cycle.service \
+ "
+# host power control
+# overwrite the host shutdown to graceful shutdown
+HOST_SHUTDOWN_TMPL = "ampere-host-shutdown.service"
+HOST_SHUTDOWN_TGTFMT = "obmc-host-shutdown@{0}.target"
+HOST_SHUTDOWN_FMT = "../${HOST_SHUTDOWN_TMPL}:${HOST_SHUTDOWN_TGTFMT}.requires/${HOST_SHUTDOWN_TMPL}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'HOST_SHUTDOWN_FMT', 'OBMC_HOST_INSTANCES')}"
+
+# Force the power cycle target to run the ampere power cycle
+HOST_REBOOT_SVC = "ampere-host-power-cycle.service"
+HOST_REBOOT_SVC_TGTFMT = "obmc-host-reboot@{0}.target"
+HOST_REBOOT_SVC_FMT = "../${HOST_REBOOT_SVC}:${HOST_REBOOT_SVC_TGTFMT}.requires/${HOST_REBOOT_SVC}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'HOST_REBOOT_SVC_FMT', 'OBMC_HOST_INSTANCES')}"
+
+# overwrite the host reset to graceful reset
+HOST_WARM_REBOOT_SOFT_SVC = "ampere-host-reset.service"
+HOST_WARM_REBOOT_TGTFMT = "obmc-host-warm-reboot@{0}.target"
+HOST_WARM_REBOOT_SOFT_SVC_FMT = "../${HOST_WARM_REBOOT_SOFT_SVC}:${HOST_WARM_REBOOT_TGTFMT}.requires/${HOST_WARM_REBOOT_SOFT_SVC}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'HOST_WARM_REBOOT_SOFT_SVC_FMT', 'OBMC_HOST_INSTANCES')}"
+
+# overwrite force reboot
+HOST_WARM_REBOOT_FORCE_TGT = "ampere-host-force-reset.service"
+HOST_WARM_REBOOT_FORCE_TGTFMT = "obmc-host-force-warm-reboot@{0}.target"
+HOST_WARM_REBOOT_FORCE_TARGET_FMT = "../${HOST_WARM_REBOOT_FORCE_TGT}:${HOST_WARM_REBOOT_FORCE_TGTFMT}.requires/${HOST_WARM_REBOOT_FORCE_TGT}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'HOST_WARM_REBOOT_FORCE_TARGET_FMT', 'OBMC_HOST_INSTANCES')}"
+
+# chassis power control
+CHASSIS_POWERON_SVC = "ampere-chassis-poweron.service"
+CHASSIS_POWERON_TGTFMT = "obmc-chassis-poweron@{0}.target"
+CHASSIS_POWERON_FMT = "../${CHASSIS_POWERON_SVC}:${CHASSIS_POWERON_TGTFMT}.requires/${CHASSIS_POWERON_SVC}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_POWERON_FMT', 'OBMC_CHASSIS_INSTANCES')}"
+
+CHASSIS_POWEROFF_SVC = "ampere-chassis-poweroff.service"
+CHASSIS_POWEROFF_TGTFMT = "obmc-chassis-poweroff@{0}.target"
+CHASSIS_POWEROFF_FMT = "../${CHASSIS_POWEROFF_SVC}:${CHASSIS_POWEROFF_TGTFMT}.requires/${CHASSIS_POWEROFF_SVC}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_POWEROFF_FMT', 'OBMC_CHASSIS_INSTANCES')}"
+
+TMPL = "phosphor-gpio-monitor@.service"
+INSTFMT = "phosphor-gpio-monitor@{0}.service"
+TGT = "multi-user.target"
+FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_HOST_MONITOR_INSTANCES')}"
+
+do_install() {
+ install -d ${D}/usr/sbin
+ install -m 0755 ${WORKDIR}/ampere_power_util.sh ${D}/${sbindir}/ampere_power_util.sh
+}
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweroff.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweroff.service
new file mode 100644
index 000000000..c3a4dce37
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweroff.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Ampere Computing LLC Power OFF Chassis
+Requires=op-wait-power-off@%i.service
+Before=op-wait-power-off@%i.service
+Conflicts=obmc-chassis-poweron@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb off
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweron.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweron.service
new file mode 100644
index 000000000..1ab492202
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-poweron.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Ampere Computing LLC Power ON Chassis
+Conflicts=obmc-chassis-poweroff@0.target
+
+[Service]
+RemainAfterExit=yes
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb on
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-force-reset.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-force-reset.service
new file mode 100644
index 000000000..8a40baf7b
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-force-reset.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ampere Computing LLC force reset host
+Conflicts=obmc-chassis-poweroff@0.target
+OnFailure=obmc-chassis-powerreset@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb force_reset
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service
new file mode 100644
index 000000000..0b32aa158
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ampere Computing LLC power cycle service
+Conflicts=obmc-host-start@0.target
+OnFailure=obmc-chassis-powerreset@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb force_reset
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service
new file mode 100644
index 000000000..a5338797a
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ampere Computing LLC triggering reset ACK
+Conflicts=obmc-host-start@0.target
+OnFailure=obmc-chassis-powerreset@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb force_reset
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset.service
new file mode 100644
index 000000000..2deb24d4f
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Ampere Computing LLC warm reset host
+Conflicts=obmc-chassis-poweroff@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb graceful_reset
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown.service
new file mode 100644
index 000000000..b7a458ede
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Ampere Computing LLC graceful shutdown host
+Conflicts=obmc-host-start@0.target
+OnFailure=obmc-chassis-poweroff@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb graceful_shutdown
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh b/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh
new file mode 100644
index 000000000..420abfb8c
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+# Usage of this utility
+function usage() {
+ echo "usage: power-util mb [on|off|status|cycle|reset|graceful_shutdown|graceful_reset|force_reset]";
+}
+
+power_off() {
+ echo "Shutting down Server $2"
+ busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Off
+}
+
+power_on() {
+ echo "Powering on Server $2"
+ gpioset 6 11=1
+ sleep 1
+ gpioset 6 11=0
+ busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.On
+}
+
+power_status() {
+ st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d"." -f6)
+ if [ "$st" == "On\"" ]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+}
+
+power_reset() {
+ echo "Reset on server $2"
+ busctl set-property xyz.openbmc_project.State.Host /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host RequestedHostTransition s xyz.openbmc_project.State.Host.Transition.Reboot
+}
+
+graceful_shutdown() {
+ if [ -f "/run/openbmc/host@0-request" ]; then
+ echo "shutdown host immediately"
+ gpioset 6 11=1
+ sleep 6
+ gpioset 6 11=0
+ power_off
+ else
+ echo "Triggering graceful shutdown"
+ gpioset -l 2 6=0
+ sleep 3
+ gpioset -l 2 6=1
+ sleep 30s
+ power_off
+ fi
+}
+
+force_reset() {
+ echo "Triggering sysreset pin"
+ gpioset -l 2 1=0
+ sleep 1
+ gpioset -l 2 1=1
+}
+
+if [ $# -lt 2 ]; then
+ echo "Total number of parameter=$#"
+ echo "Insufficient parameter"
+ usage;
+ exit 0;
+fi
+
+if [ $1 != "mb" ]; then
+ echo "Invalid parameter1=$1"
+ usage;
+ exit 0;
+fi
+
+if [ $2 = "on" ]; then
+ if [ $(power_status) == "off" ]; then
+ power_on
+ fi
+elif [ $2 = "off" ]; then
+ if [ $(power_status) == "on" ]; then
+ power_off
+ fi
+ # If any request of graceful reset, need to power on
+ if [ -f "/run/openbmc/host@0-graceful-reset" ]; then
+ sleep 20s
+ power_on
+ rm -f "/run/openbmc/host@0-graceful-reset"
+ fi
+elif [ $2 == "cycle" ]; then
+ if [ $(power_status) == "on" ]; then
+ echo "Power cycling server"
+ power_off
+ sleep 20s
+ power_on
+ else
+ echo "Host is already off, do nothing"
+ fi
+elif [ $2 == "reset" ]; then
+ if [ $(power_status) == "on" ]; then
+ power_reset
+ else
+ echo "ERROR: Server not powered on"
+ fi
+elif [[ $2 == "graceful_shutdown" ]]; then
+ graceful_shutdown
+elif [ $2 == "graceful_reset" ]; then
+ mkdir -p "/run/openbmc/"
+ touch "/run/openbmc/host@0-graceful-reset"
+ graceful_shutdown
+ sleep 20s
+elif [ $2 == "status" ]; then
+ power_status
+elif [ $2 == "force_reset" ]; then
+ force_reset
+else
+ echo "Invalid parameter2=$2"
+ usage;
+fi
+
+exit 0;
+
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
index e0697b906..90ec84aba 100644
--- 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
@@ -8,12 +8,12 @@ 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]})
+ ver=$(printf '%d.%d.%d.%d' ${rsp[5]} ${rsp[4]} ${rsp[3]} ${rsp[2]})
;;
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]})
+ ver=$(printf '%d.%d.%d.%d' ${rsp[5]} ${rsp[4]} ${rsp[3]} ${rsp[2]})
;;
*)
;;
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
index d103747b2..a63c3e61c 100644
--- 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
@@ -28,6 +28,10 @@ function fwbios() {
fi
echo "Flashing BIOS @/dev/$BIOS_MTD"
flashcp -v $1 /dev/$BIOS_MTD
+ if [ $? -ne 0 ]; then
+ echo "Flashing the bios failed " >&2
+ exit 1
+ fi
wait
# switch the SPI mux from BMC to Host
@@ -36,23 +40,38 @@ function fwbios() {
fi
i2cset -y -f -a 13 0x76 0x10 0x00
+ # Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE.
+ # Moved to before SCP as fwscp function returns 0 on success
+ nvparm -s 0x1 -o 0x114090
+ # TODO: Disabled toggling of SMPro heartbeat (require CPLD v 1.12.0.0+)
+ # nvparm -s 0x1 -o 0x5F0638
+ if [ $? -ne 0 ]; then
+ echo "Setting default nvparms failed " >&2
+ exit 1
+ fi
+
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
- # Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE.
- nvparm -s 0x1 -o 0x114090
+
rm -f $1
+ exit 0
}
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
+ if [ $? -ne 0 ]; then
+ echo "BMC CPLD update failed" >&2
+ exit 1
+ fi
wait
set_gpio_ctrl 218 out 1
rm -f $1
+ exit 0
}
function fwmbcpld() {
@@ -61,8 +80,13 @@ function fwmbcpld() {
set_gpio_ctrl 218 out 1
set_gpio_ctrl 164 out 1
loadsvf -d /dev/jtag0 -s $1 -m 0
+ if [ $? -ne 0 ]; then
+ echo "Mobo CPLD update failed" >&2
+ exit 1
+ fi
wait
rm -f $1
+ exit 0
}
function fwscp() {
@@ -72,10 +96,15 @@ function fwscp() {
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
+ if [ $? -ne 0 ]; then
+ echo "SCP eeprom update failed" >&2
+ exit 1
+ fi
wait
set_gpio_ctrl 85 out 1
set_gpio_ctrl 168 out 1
rm -f $1
+ exit 0
}
function fwscpback() {
@@ -85,12 +114,58 @@ function fwscpback() {
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
+ if [ $? -ne 0 ]; then
+ echo "SCP BACKUP eeprom update failed" >&2
+ exit 1
+ fi
wait
set_gpio_ctrl 85 out 1
set_gpio_ctrl 168 out 1
rm -f $1
+ exit 0
+}
+
+function fwmb_pwr_seq(){
+ #$1 0x40 seq config file
+ #$2 0x41 seq config file
+ if [[ ! -e $1 ]]; then
+ echo "$1 file does not exist"
+ exit 1
+ fi
+ if [[ ! -e $2 ]]; then
+ echo "$2 file does not exist"
+ exit 1
+ fi
+ echo 32-0040 > /sys/bus/i2c/drivers/adm1266/unbind
+ echo 32-0041 > /sys/bus/i2c/drivers/adm1266/unbind
+ adm1266_fw_fx $1 $2
+ if [ $? -ne 0 ]; then
+ echo "The power seq flash failed" >&2
+ exit 1
+ fi
+ echo 32-0040 > /sys/bus/i2c/drivers/adm1266/bind
+ echo 32-0041 > /sys/bus/i2c/drivers/adm1266/bind
+ rm -f $1
+ rm -f $2
+ exit 0
}
+if [[ ! $(which flashcp) ]]; then
+ echo "flashcp utility not installed"
+ exit 1
+fi
+if [[ ! $(which ampere_eeprom_prog) ]]; then
+ echo "ampere_eeprom_prog utility not installed"
+ exit 1
+fi
+if [[ ! $(which loadsvf) ]]; then
+ echo "loadsvf utility not installed"
+ exit 1
+fi
+if [[ ! -e /dev/jtag0 ]]; then
+ echo "Jtag device driver not functional"
+ exit 1
+fi
case $1 in
bios)
@@ -108,6 +183,9 @@ case $1 in
scpback)
fwscpback $2
;;
+ mbseq)
+ fwmb_pwr_seq $2 $3
+ ;;
*)
;;
esac
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
index b589379fb..5145009a6 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
@@ -1,7 +1,10 @@
#!/bin/bash
source /usr/sbin/kudo-lib.sh
-
+# sleep so that FRU and all ipmitool Devices are ready before HOST OS
+# gpio 143 for HPM_STBY_RST_N do to DC-SCM spec
+set_gpio_ctrl 143 out 1
+sleep 5 # for the MUX to get ready
# set all mux route to CPU before power on host
# BMC_CPU_RTC_I2C_SEL #120
set_gpio_ctrl 120 out 1
@@ -21,7 +24,27 @@ set_gpio_ctrl 7 out 1
i2cset -y -f -a 13 0x76 0x10 0x00
# Power control
-# MON_BMC_ALIVE, GPIO 10
+# MON_BMC_ALIVE, GPIO 10(EVT), GPIO137(DVT)
set_gpio_ctrl 10 out 1
+set_gpio_ctrl 137 out 1
# S0_BMC_OK, GPIO 69
set_gpio_ctrl 69 out 1
+
+# Disable CPU 1 CLK when cpu not detected
+boardver=$(printf '%d' `cat /sys/bus/i2c/drivers/fiicpld/34-0076/CMD00 | awk '{print $6}'`)
+# echo init_once cpu $CPU1_STATUS > /dev/ttyS0
+# echo init_once board $boardver > /dev/ttyS0
+CPU1_STATUS_N=$(get_gpio_ctrl 136)
+if [[ $CPU1_STATUS_N == 1 ]]; then
+ #Execute this only on DVT systems
+ if [[ $boardver == 0 ]]; then
+ echo EVT system $boardver
+ else
+ echo DVT system $boardver
+ i2cset -y -a -f 37 0x68 0x05 0x03
+ fi
+ #These i2c deviecs are already installed on EVT systems
+ i2cset -y -a -f 16 0x6a 0 1 0xdf i
+ i2cset -y -a -f 16 0x6a 11 1 0x01 i
+ i2cset -y -a -f 17 0x67 1 2 0x3f 0x0c i
+fi
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
index 0c12fca13..03adb8ef6 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
@@ -13,7 +13,6 @@ function usage_rst() {
}
function usage_led() {
-
echo " kudo led 'att'/'boot' [parameter]"
echo " on --> change to CPU console"
echo " off --> change to CPU 0 SCP console"
@@ -22,11 +21,13 @@ function usage_led() {
function usage_uart() {
echo " kudo uart [parameter]"
- echo " host --> change to CPU console"
- echo " scp1 --> change to CPU 0 SCP console"
- echo " scp2 --> change to CPU 1 SCP console"
- echo " hosthr --> change CPU console to header"
- echo " scphr --> change SCP console to header"
+ echo " host --> show CPU console"
+ echo " scp --> show SCP0 console"
+ echo " swhost --> change to CPU console to ttyS1"
+ echo " swscp1 --> change to CPU 0 SCP console to ttyS3"
+ echo " swscp2 --> change to CPU 1 SCP console"
+ echo " swhosthr --> change CPU console to header"
+ echo " swscphr --> change SCP console to header"
echo " display --> "
}
@@ -70,10 +71,10 @@ function reset() {
set_gpio_ctrl 203 out 0
;;
display)
- echo "Virtual reset #94" $(get set_gpio_ctrl 94)
- echo "S0 System reset #65" $(get set_gpio_ctrl 65)
- echo "Power Button #203" $(get set_gpio_ctrl 203)
- echo "BMC_CPU SHD Req #70" $(get set_gpio_ctrl 70)
+ echo "Virtual reset #94" $(get_gpio_ctrl 94)
+ echo "S0 System reset #65" $(get_gpio_ctrl 65)
+ echo "Power Button #203" $(get_gpio_ctrl 203)
+ echo "BMC_CPU SHD Req #70" $(get_gpio_ctrl 70)
;;
*)
usage_rst
@@ -114,22 +115,38 @@ function fw_rev() {
function uartmux() {
case $1 in
host)
+ if [ `tty` == "/dev/ttyS0" ]; then
+ echo "Couldn't redirect to the host console within BMC local console"
+ else
+ echo "Entering Console use 'shift ~~..' to quit"
+ obmc-console-client -c /etc/obmc-console/server.ttyS1.conf
+ fi
+ ;;
+ scp)
+ if [ `tty` == "/dev/ttyS0" ]; then
+ echo "Couldn't redirect to the scp console within BMC local console"
+ else
+ echo "Entering Console use 'shift ~~..' to quit"
+ obmc-console-client -c /etc/obmc-console/server.ttyS3.conf
+ fi
+ ;;
+ swhost)
set_gpio_ctrl 167 out 1
;;
- scp1)
+ swscp1)
set_gpio_ctrl 161 out 1
set_gpio_ctrl 177 out 1
set_gpio_ctrl 198 out 0
;;
- scp2)
+ swscp2)
set_gpio_ctrl 161 out 1
set_gpio_ctrl 177 out 1
set_gpio_ctrl 198 out 1
;;
- hosthr)
+ swhosthr)
set_gpio_ctrl 167 out 0
;;
- scphr)
+ swscphr)
set_gpio_ctrl 161 out 0
set_gpio_ctrl 177 out 0
;;
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 07d038024..cc32052c5 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,6 +5,7 @@ inherit packagegroup
PROVIDES = "${PACKAGES}"
PACKAGES = " \
+ ${PN}-kudo-chassis \
${PN}-kudo-system \
${PN}-kudo-fw \
${PN}-fan-mgmt \
@@ -17,6 +18,14 @@ RPROVIDES_${PN}-kudo-system += "virtual-obmc-system-mgmt"
RPROVIDES_${PN}-kudo-fw += "virtual-obmc-flash-mgmt"
RPROVIDES_${PN}-fan-mgmt += "virtual-obmc-fan-mgmt"
+SUMMARY_${PN}-kudo-chassis = "kudo chassis"
+RDEPENDS_${PN}-kudo-chassis = " \
+ phosphor-hostlogger \
+ obmc-op-control-power \
+ obmc-phosphor-buttons-signals \
+ obmc-phosphor-buttons-handler \
+ "
+
SUMMARY_${PN}-kudo-system = "kudo System"
RDEPENDS_${PN}-kudo-system = " \
ipmitool \
@@ -32,6 +41,7 @@ RDEPENDS_${PN}-kudo-system = " \
gbmc-mac-config \
kudo-boot \
kudo-cmd \
+ phosphor-state-manager \
"
SUMMARY_${PN}-kudo-fw = "kudo Firmware"
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
index 664ca5901..3fffde0d4 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
+++ b/meta-fii/meta-kudo/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
@@ -1,2 +1 @@
-# Enable threshold monitoring
-EXTRA_OECMAKE_append_kudo = " -DSEL_LOGGER_MONITOR_THRESHOLD_EVENTS=ON"
+PACKAGECONFIG_append_kudo = " log-threshold"
diff --git a/meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager/chassis_capabilities.override.yml b/meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager/chassis_capabilities.override.yml
new file mode 100644
index 000000000..461fec845
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager/chassis_capabilities.override.yml
@@ -0,0 +1,23 @@
+/xyz/openbmc_project/control/chassis0/chassiscapabilities:
+ - Interface: xyz.openbmc_project.Control.ChassisCapabilities
+ Properties:
+ CapabilitiesFlags:
+ Default: 32
+ ChassisIntrusionEnabled:
+ Default: 'true'
+ ChassisFrontPanelLockoutEnabled:
+ Default: 'true'
+ ChassisNMIEnabled:
+ Default: 'true'
+ ChassisPowerInterlockEnabled:
+ Default: 'true'
+ FRUDeviceAddress:
+ Default: 32
+ SDRDeviceAddress:
+ Default: 32
+ SELDeviceAddress:
+ Default: 32
+ SMDeviceAddress:
+ Default: 32
+ BridgeDeviceAddress:
+ Default: 32
diff --git a/meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager_%.bbappend
new file mode 100644
index 000000000..79d7ac0b0
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/settings/phosphor-settings-manager_%.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_append_kudo := ":${THISDIR}/${PN}"
+SRC_URI_append_kudo = " file://chassis_capabilities.override.yml"
diff --git a/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
new file mode 100644
index 000000000..2dccd42e8
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
@@ -0,0 +1,27 @@
+{
+ "gpio_configs": {
+
+ "power_config": {
+ "power_good_in": "PGOOD",
+ "power_up_outs": [
+ ],
+ "reset_outs": [
+ {"name": "BMC_S0_SYSRESET_N", "polarity": false}
+ ]
+ }
+ },
+
+ "gpio_definitions": [
+ {
+ "name": "PGOOD",
+ "num": 200,
+ "direction": "in"
+ },
+ {
+ "name": "BMC_S0_SYSRESET_N",
+ "num": 65,
+ "direction": "out"
+ }
+ ]
+}
+
diff --git a/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend
new file mode 100644
index 000000000..533a69a91
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_append_kudo := ":${THISDIR}/${PN}"
+SRC_URI_append_kudo = " file://gpio_defs.json"
+
diff --git a/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-cycle.service b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-cycle.service
new file mode 100644
index 000000000..73aabb6ed
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-cycle.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Watchdog power state power hotswap
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/bin/env kudo.sh rst hotswap
+SyslogIdentifier=phosphor-watchdog
diff --git a/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-poweroff.service b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-poweroff.service
new file mode 100644
index 000000000..9586368b5
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-poweroff.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Watchdog power state power cycle shutdown
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/bin/env kudo.sh rst shutdown
+SyslogIdentifier=phosphor-watchdog
diff --git a/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-reset.service b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-reset.service
new file mode 100644
index 000000000..fb6614e49
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog-host-reset.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Watchdog power state reset system
+
+[Service]
+Type=oneshot
+RemainAfterExit=no
+ExecStart=/usr/bin/env kudo.sh rst system
+SyslogIdentifier=phosphor-watchdog
diff --git a/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service
new file mode 100644
index 000000000..675293456
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Phosphor Watchdog
+
+[Service]
+ExecStart=/usr/bin/env phosphor-watchdog --continue --service=xyz.openbmc_project.Watchdog \
+ --path=/xyz/openbmc_project/watchdog/host0 \
+ --action_target=xyz.openbmc_project.State.Watchdog.Action.HardReset=phosphor-watchdog-host-reset.service \
+ --action_target=xyz.openbmc_project.State.Watchdog.Action.PowerOff=phosphor-watchdog-host-poweroff.service \
+ --action_target=xyz.openbmc_project.State.Watchdog.Action.PowerCycle=phosphor-watchdog-host-cycle.service \
+
+# This should use state manager instead of the service files currently defined
+
+SyslogIdentifier=phosphor-watchdog
+BusName=xyz.openbmc_project.Watchdog
+Type=dbus
+
+[Install]
+WantedBy=basic.target
diff --git a/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
new file mode 100644
index 000000000..e795905ab
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
@@ -0,0 +1,9 @@
+FILESEXTRAPATHS_prepend_kudo := "${THISDIR}/${PN}:"
+
+# Remove the override to keep service running after DC cycle
+SYSTEMD_OVERRIDE_${PN}_remove_kudo = "poweron.conf:phosphor-watchdog@poweron.service.d/poweron.conf"
+SYSTEMD_SERVICE_${PN}_kudo = " phosphor-watchdog.service \
+ phosphor-watchdog-host-poweroff.service \
+ phosphor-watchdog-host-cycle.service\
+ phosphor-watchdog-host-reset.service\
+ "