Karthikeyan Pasupathi | 36f035b | 2022-08-28 17:35:29 +0530 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # Provide source directive to shellcheck. |
Patrick Williams | 9afd92e | 2024-02-15 15:28:34 -0600 | [diff] [blame^] | 4 | # shellcheck source=meta-facebook/meta-greatlakes/recipes-phosphor/state/phosphor-state-manager/power-cmd |
Delphine CC Chiu | ab1722f | 2022-12-01 11:43:35 +0800 | [diff] [blame] | 5 | source /usr/libexec/phosphor-state-manager/power-cmd |
Karthikeyan Pasupathi | 36f035b | 2022-08-28 17:35:29 +0530 | [diff] [blame] | 6 | |
Delphine CC Chiu | 17539d8 | 2023-03-09 15:27:47 +0800 | [diff] [blame] | 7 | HOST_ID=$1 |
Karthikeyan Pasupathi | 36f035b | 2022-08-28 17:35:29 +0530 | [diff] [blame] | 8 | SLOT_ID=$(( $1-1 << 2 )) |
| 9 | |
| 10 | # Host Power Off |
| 11 | host-power-off() |
| 12 | { |
| 13 | for pwr_cmd in "${power_seq[@]}" |
| 14 | do |
BonnieLo-wiwynn | 052ee41 | 2023-03-31 14:27:50 +0800 | [diff] [blame] | 15 | response="$(busctl call "$SERVICE" "$OBJECT_PATH" "$INTERFACE" sendRequest yyyyay "$SLOT_ID" "$NETFN" "$LUN" "$CMD" "$DATA_LEN" 0x01 0x42 0x01 0x00 "$pwr_cmd")" |
| 16 | echo "$response" |
| 17 | result=$(echo "$response" | cut -d" " -f "$IPMB_CMD_COMPLETE_CODE_INDEX") |
| 18 | if [ "$result" -ne 0 ] |
| 19 | then |
| 20 | echo "Failed to send ipmb command" |
| 21 | exit 1 |
| 22 | fi |
Delphine CC Chiu | 17539d8 | 2023-03-09 15:27:47 +0800 | [diff] [blame] | 23 | if [ "$pwr_cmd" == "$POWER_BTN_LOW" ] |
Karthikeyan Pasupathi | 36f035b | 2022-08-28 17:35:29 +0530 | [diff] [blame] | 24 | then |
| 25 | sleep 6 |
| 26 | fi |
| 27 | done |
Delphine CC Chiu | 17539d8 | 2023-03-09 15:27:47 +0800 | [diff] [blame] | 28 | |
| 29 | # Check host stattus after doing host power off |
| 30 | host_status=$(host-power-status $SLOT_ID) |
| 31 | if [ "$host_status" == "$STATE_OFF" ] |
| 32 | then |
| 33 | busctl set-property "$HOST_BUS_NAME""$HOST_ID" "$HOST_OBJ_PATH""$HOST_ID" "$HOST_INTF_NAME" "$HOST_PROPERTY_NAME" s "$HOST_OFF" |
| 34 | echo "Host power off" |
| 35 | exit 0; |
| 36 | else |
| 37 | busctl set-property "$HOST_BUS_NAME""$HOST_ID" "$HOST_OBJ_PATH""$HOST_ID" "$HOST_INTF_NAME" "$HOST_PROPERTY_NAME" s "$HOST_ON" |
| 38 | echo "Host power on" |
| 39 | exit 0; |
| 40 | fi |
Karthikeyan Pasupathi | 36f035b | 2022-08-28 17:35:29 +0530 | [diff] [blame] | 41 | } |
| 42 | |
| 43 | # Check Host Response and Status |
Delphine CC Chiu | 17539d8 | 2023-03-09 15:27:47 +0800 | [diff] [blame] | 44 | host_status=$(host-power-status $SLOT_ID) |
| 45 | if [ "$host_status" == "$STATE_ON" ] |
| 46 | then |
| 47 | host-power-off |
| 48 | else |
| 49 | echo "Power is already off" |
| 50 | exit 1; |
| 51 | fi |