57 lines
1.7 KiB
Bash
57 lines
1.7 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Provide source directive to shellcheck.
|
||
|
|
# shellcheck source=meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-cmd
|
||
|
|
source /usr/libexec/phosphor-state-manager/power-cmd
|
||
|
|
|
||
|
|
SLOT=$(( $1-1 ))
|
||
|
|
OFFSET=$(( 0x9 + SLOT ))
|
||
|
|
|
||
|
|
chassis-power-cycle()
|
||
|
|
{
|
||
|
|
CHASSIS_ID=$1
|
||
|
|
|
||
|
|
if [ "$CHASSIS_ID" -le 4 ]
|
||
|
|
then
|
||
|
|
chassis_status=$(chassis-power-status $SLOT)
|
||
|
|
if [ "$chassis_status" == "$STATE_ON" ]
|
||
|
|
then
|
||
|
|
i2cset -y "$CPLD_BUS_NUM" "$CPLD_PWR_CTRL_ADDR" "$OFFSET" "$POW_OFF_SLOT"
|
||
|
|
sleep 10
|
||
|
|
chassis_status=$(chassis-power-status $SLOT)
|
||
|
|
if [ "$chassis_status" -ne "$STATE_OFF" ]
|
||
|
|
then
|
||
|
|
echo "chassis$CHASSIS_ID power off fail"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
i2cset -y "$CPLD_BUS_NUM" "$CPLD_PWR_CTRL_ADDR" "$OFFSET" "$POW_ON_SLOT"
|
||
|
|
sleep 2
|
||
|
|
|
||
|
|
# Check chassis stattus after doing 12V cycle
|
||
|
|
chassis_status=$(chassis-power-status $SLOT)
|
||
|
|
if [ "$chassis_status" == "$STATE_ON" ]
|
||
|
|
then
|
||
|
|
busctl set-property "$CHASSIS_BUS_NAME""$CHASSIS_ID" "$CHASSIS_OBJ_PATH""$CHASSIS_ID" "$CHASSIS_INTF_NAME" "$CHASSIS_PROPERTY_NAME" s "$CHASSIS_ON"
|
||
|
|
exit 0;
|
||
|
|
else
|
||
|
|
busctl set-property "$CHASSIS_BUS_NAME""$CHASSIS_ID" "$CHASSIS_OBJ_PATH""$CHASSIS_ID" "$CHASSIS_INTF_NAME" "$CHASSIS_PROPERTY_NAME" s "$CHASSIS_OFF"
|
||
|
|
exit 0;
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Invalid slot id"
|
||
|
|
exit 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
if [ "$1" == 0 ]
|
||
|
|
then
|
||
|
|
echo "Enter SLED-cycle"
|
||
|
|
result=$(i2cset -y "$CPLD_BUS_NUM" "$CPLD_PWR_CTRL_ADDR" 0x2b 0x1)
|
||
|
|
echo "$result"
|
||
|
|
else
|
||
|
|
echo "Enter slot$1 cycle"
|
||
|
|
chassis-power-cycle "$1"
|
||
|
|
fi
|
||
|
|
|