diff options
5 files changed, 89 insertions, 0 deletions
diff --git a/meta-facebook/meta-minerva/conf/machine/minerva.conf b/meta-facebook/meta-minerva/conf/machine/minerva.conf index 22b6a3db8e..7b2ee8a3b5 100644 --- a/meta-facebook/meta-minerva/conf/machine/minerva.conf +++ b/meta-facebook/meta-minerva/conf/machine/minerva.conf @@ -15,3 +15,5 @@ require conf/machine/include/obmc-bsp-common.inc require conf/machine/include/facebook-tpm2.inc FLASH_SIZE = "131072" + +OBMC_CHASSIS_INSTANCES = "0 1" diff --git a/meta-facebook/meta-minerva/recipes-phosphor/images/fb-minerva-phosphor-image.inc b/meta-facebook/meta-minerva/recipes-phosphor/images/fb-minerva-phosphor-image.inc index 72516c6215..fa5266988d 100644 --- a/meta-facebook/meta-minerva/recipes-phosphor/images/fb-minerva-phosphor-image.inc +++ b/meta-facebook/meta-minerva/recipes-phosphor/images/fb-minerva-phosphor-image.inc @@ -27,3 +27,7 @@ OBMC_IMAGE_EXTRA_INSTALL:append = " \ OBMC_IMAGE_EXTRA_INSTALL:append = " \ phosphor-sel-logger \ " + +OBMC_IMAGE_EXTRA_INSTALL:append = " \ + phosphor-state-manager \ +" diff --git a/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle b/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle new file mode 100644 index 0000000000..deaa7afe5a --- /dev/null +++ b/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle @@ -0,0 +1,59 @@ +#!/bin/bash + +# shellcheck source=meta-facebook/meta-minerva/recipes-minerva/plat-tool/files/minerva-common-functions +source /usr/libexec/minerva-common-functions + +# Minerva CMM Sled Power Cycle and Chassis Power Cycle + +cmm-hsc-power-cycle() { + #TBD: Since there has a 2nd HSC, it is necessary to determine which HSC it is now. + + # LTC4287 MFR_REBOOT_CONTROL (FDh) Read/Write + # [3]: + # REBOOT 0 Write a 1 to reboot. + # [2:0] + # RBT_DL 100 Configures Auto-Reboot turn-on Delay (tDL(RBT)) after the REBOOT bit is set to 1 + # RBT_DL[2:0] DELAY + # 000 0.580 s + # 001 1.16 s + # 010 2.32 s + # 011 4.64 s + # 100 9.28 s + # 101 18.6 s + # 110 37.1 s + # 111 74.2 s + i2cset -y -f 0 0x44 0xfd 0x00 + i2cset -y -f 0 0x44 0xfd 0x0b +} + +compute-blade-hsc-power-off() { + for i in {0..15} + do + set_gpio "PWREN_MTIA_BLADE${i}_HSC_EN_N" 1 + done +} + +network-blade-hsc-power-off() { + for i in {0..15} + do + set_gpio "PWREN_MTIA_BLADE${i}_HSC_EN_N" 1 + done +} + +# CMM Sled Power Cycle +if [ "$1" == 0 ] +then + echo "Staring CMM Sled Power Cycle" + cmm-hsc-power-cycle +# CMM Chassis Power Cycle +elif [ "$1" == 1 ] +then + echo "Staring CMM Chassis Power Cycle" + + compute-blade-hsc-power-off + network-blade-hsc-power-off + cmm-hsc-power-cycle +else + echo "Invalid CMM Cycle" + exit 1 +fi diff --git a/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle@.service b/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle@.service new file mode 100644 index 0000000000..a8fa1e259c --- /dev/null +++ b/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle@.service @@ -0,0 +1,9 @@ +[Unit] +Description=Chassis%i Power Cycle + +[Service] +Type=oneshot +ExecStart=/usr/libexec/phosphor-state-manager/chassis-powercycle %i + +[Install] +WantedBy=obmc-chassis-powercycle@%i.target diff --git a/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager_%.bbappend index ff214fa676..4f8d258055 100644 --- a/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager_%.bbappend +++ b/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager_%.bbappend @@ -6,3 +6,18 @@ CHASSIS_DEFAULT_TARGETS:remove = " \ obmc-chassis-poweroff@{}.target.requires/obmc-power-stop@{}.service \ obmc-chassis-poweron@{}.target.requires/obmc-power-start@{}.service \ " + +RDEPENDS:${PN}:append = " bash" + +SRC_URI:append:minerva = " \ + file://chassis-powercycle \ + file://chassis-powercycle@.service \ + " + +do_install:append:minerva() { + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/*.service ${D}${systemd_system_unitdir}/ + + install -d ${D}${libexecdir}/${PN} + install -m 0755 ${WORKDIR}/chassis-powercycle ${D}${libexecdir}/${PN}/ +} |