summaryrefslogtreecommitdiff
path: root/meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle
diff options
context:
space:
mode:
Diffstat (limited to 'meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle')
-rw-r--r--meta-facebook/meta-minerva/recipes-phosphor/state/phosphor-state-manager/chassis-powercycle51
1 files changed, 40 insertions, 11 deletions
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
index deaa7afe5a..ce6e6833d0 100644
--- 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
@@ -6,8 +6,6 @@ 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.
@@ -22,21 +20,49 @@ cmm-hsc-power-cycle() {
# 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
+ ret1=$(i2cset -y -f 0 0x44 0xfd 0x00)
+ ret2=$(i2cset -y -f 0 0x44 0xfd 0x0b)
+
+ # XDP710 RESTART command (0xEC)
+ ret3=$(i2cset -f -y 0 0x43 0xec)
+
+ if [ "$ret3" -ne 0 ] && { [ "$ret1" -ne 0 ] || [ "$ret2" -ne 0 ]; }; then
+ return 1
+ else
+ return 0
+ fi
+
}
-compute-blade-hsc-power-off() {
+compute-blade-hsc-power-control() {
+
+ if [ "$1" == "on" ];then
+ val=0
+ elif [ "$1" == "off" ]; then
+ val=1
+ else
+ return 1
+ fi
+
for i in {0..15}
do
- set_gpio "PWREN_MTIA_BLADE${i}_HSC_EN_N" 1
+ set_gpio "PWREN_MTIA_BLADE${i}_HSC_EN_N" $val
done
}
-network-blade-hsc-power-off() {
- for i in {0..15}
+network-blade-hsc-power-control() {
+
+ if [ "$1" == "on" ];then
+ val=0
+ elif [ "$1" == "off" ]; then
+ val=1
+ else
+ return 1
+ fi
+
+ for i in {0..5}
do
- set_gpio "PWREN_MTIA_BLADE${i}_HSC_EN_N" 1
+ set_gpio "PWREN_NW_BLADE${i}_HSC_EN_N" $val
done
}
@@ -50,8 +76,11 @@ elif [ "$1" == 1 ]
then
echo "Staring CMM Chassis Power Cycle"
- compute-blade-hsc-power-off
- network-blade-hsc-power-off
+ compute-blade-hsc-power-control "off"
+ network-blade-hsc-power-control "off"
+ sleep 0.2 # 200ms
+ compute-blade-hsc-power-control "on"
+ network-blade-hsc-power-control "on"
cmm-hsc-power-cycle
else
echo "Invalid CMM Cycle"