diff options
Diffstat (limited to 'meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/host-poweroff')
-rw-r--r-- | meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/host-poweroff | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/host-poweroff b/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/host-poweroff new file mode 100644 index 0000000000..096e08fdde --- /dev/null +++ b/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/host-poweroff @@ -0,0 +1,40 @@ +#!/bin/bash + +# Provide source directive to shellcheck. +# shellcheck source=meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-cmd +source /usr/libexec/power-cmd + +SLOT_ID=$(( $1-1 << 2 )) + +# Host Power Off +host-power-off() +{ + for pwr_cmd in "${power_seq[@]}" + do + result="$(busctl call $SERVICE $OBJECT_PATH $INTERFACE sendRequest yyyyay $SLOT_ID $NETFN $LUN $CMD $DATA_LEN 0x01 0x42 0x01 0x00 "$pwr_cmd")" + echo "$result" + if [ "$pwr_cmd" == $POWER_BTN_LOW ] + then + sleep 6 + fi + done + echo "Host power off" + exit 0; +} + +# Check Host Response and Status +host-power-status() +{ + response="$(busctl call $SERVICE $OBJECT_PATH $INTERFACE sendRequest yyyyay $SLOT_ID 0x38 $LUN 0x3 0x03 0x15 0xa0 0x00)" + + result=$(echo "$response" | cut -d" " -f $PWRGD_SYS_PWROK_INDEX) + res="$(( "$result" & 0x80 ))" + pgood="$(( "$res" >> 7 ))" + if [ "$pgood" == $STATE_ON ] + then + host-power-off + fi + echo "Power is already off" + exit 1; +} +host-power-status |