1#!/bin/bash
2
3# Provide source directive to shellcheck.
4# shellcheck source=meta-facebook/meta-yosemite4/recipes-phosphor/state/phosphor-state-manager/power-cmd
5source /usr/libexec/phosphor-state-manager/power-cmd
6# shellcheck source=meta-facebook/meta-yosemite4/recipes-yosemite4/plat-tool/files/yosemite4-common-functions
7source /usr/libexec/yosemite4-common-functions
8
9# Handle chassis and host power state for chassis poweron failure.
10
11CHASSIS_ID=$1
12IO_EXP_SLOT_PWR_STATUS=$((CHASSIS_ID - 1))
13
14GPIOCHIP_IO_EXP_SLOT_PWR_CTRL=$(basename "/sys/bus/i2c/devices/$SPIDER_BOARD_IO_EXP_BUS_NUM-00$IO_EXP_SLOT_PWR_CTRL_ADDR/"*gpiochip*)
15
16chassis_status=$(get_ac_on_status "$GPIOCHIP_IO_EXP_SLOT_PWR_CTRL" "$IO_EXP_SLOT_PWR_STATUS")
17if [ "$chassis_status" == "$STATE_OFF" ]
18then
19    # Stop obmc-chassis-poweron.target to avoid chassis-state-manager to set power state to On.
20    /bin/systemctl stop obmc-chassis-poweron@"${CHASSIS_ID}".target
21
22    # Set chassis power state to Off.
23    /bin/sh -c "busctl set-property $(mapper get-service /xyz/openbmc_project/state/chassis"${CHASSIS_ID}") \
24        /xyz/openbmc_project/state/chassis${CHASSIS_ID} \
25        xyz.openbmc_project.State.Chassis CurrentPowerState \
26        s xyz.openbmc_project.State.Chassis.PowerState.Off"
27fi
28