1#!/bin/bash 2 3# shellcheck source=meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions 4source /usr/libexec/fb-common-functions 5 6check_valid_sgpio() { 7 sgpio_vaild0=$(gpioget 2 146) 8 sgpio_vaild1=$(gpioget 2 198) 9 sgpio_vaild2=$(gpioget 2 18) 10 11 if [[ "$sgpio_vaild0" == "0" && "$sgpio_vaild1" == "0" && "$sgpio_vaild2" == "1" ]]; then 12 return 0 # true 13 else 14 return 1 # false 15 fi 16} 17 18# Power Good Status 19power_status() { 20 check_valid_sgpio 21 valid_sgpio=$? 22 23 if [ "$(get_gpio "host0-ready")" -eq 1 ] && [ "$valid_sgpio" -eq 0 ] ; then 24 echo "on" 25 else 26 echo "off" 27 fi 28} 29 30# Force DC off 31force_power_off() { 32 if [ "$(power_status)" == "on" ]; then 33 set_gpio power-host-control 0 34 sleep 6 35 set_gpio power-host-control 1 36 sleep 6 37 fi 38 39 # Workaround for AMD force shutdown failure. 40 if [ "$(power_status)" == "on" ]; then 41 set_gpio reset-control 0 42 sleep 1 43 set_gpio reset-control 1 44 sleep 3 45 46 set_gpio power-host-control 0 47 sleep 1 48 set_gpio power-host-control 1 49 sleep 1 50 51 for i in $(seq 1 10) 52 do 53 sleep 1 54 if [ "$(power_status)" == "off" ]; then 55 return 0 56 fi 57 58 if [ "$i" -eq 10 ]; then 59 return 1 60 fi 61 done 62 fi 63} 64 65# Graceful DC off 66graceful_power_off() { 67 if [ "$(power_status)" == "on" ]; then 68 set_gpio power-host-control 0 69 sleep 1 70 set_gpio power-host-control 1 71 sleep 1 72 73 # wait host power off 74 for i in $(seq 1 20) 75 do 76 sleep 1 77 if [ "$(power_status)" == "off" ]; then 78 break 79 fi 80 done 81 fi 82} 83 84# DC on 85power_on() { 86 if [ "$(power_status)" == "off" ]; then 87 set_gpio power-host-control 0 88 sleep 1 89 set_gpio power-host-control 1 90 sleep 1 91 92 for i in $(seq 1 10) 93 do 94 sleep 1 95 if [ "$(power_status)" == "on" ]; then 96 return 0 97 fi 98 99 if [ "$i" -eq 10 ]; then 100 return 1 101 fi 102 done 103 fi 104 return 0 105} 106 107# Host reset 108power_reset() { 109 set_gpio reset-control 0 110 sleep 1 111 set_gpio reset-control 1 112 sleep 1 113 return 0 114} 115