| #!/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 |
| 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 |
| |