summaryrefslogtreecommitdiff
path: root/meta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util
diff options
context:
space:
mode:
Diffstat (limited to 'meta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util')
-rwxr-xr-xmeta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util94
1 files changed, 71 insertions, 23 deletions
diff --git a/meta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util b/meta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util
index 59f91ece7..a2261fb81 100755
--- a/meta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util
+++ b/meta-facebook/meta-tiogapass/recipes-fbtp/fb-powerctrl/files/power-util
@@ -1,48 +1,96 @@
#!/bin/bash
# Usage of this utility
function usage() {
- echo "usage: power-util mb 1 [on|off]";
+ echo "usage: power-util mb [on|off|status|cycle|reset]";
+ echo " power-util sled-cycle"
}
GPIO_BASE=$(cat /sys/class/gpio/gpio*/base)
PWR_GPIO=$(($GPIO_BASE + 32 + 3))
BMC_RDY_GPIO=$(($GPIO_BASE + 144 +1))
+PWR_GOOD=$(($GPIO_BASE + 8 + 6))
+PWR_RESET=$(($GPIO_BASE + 33))
-if [ $# -lt 3 ]; then
+power_off() {
+ echo "Shutting down Server $2"
+ echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
+ sleep 1
+ echo 0 > /sys/class/gpio/gpio${PWR_GPIO}/value
+ sleep 6
+ echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
+}
+
+power_on() {
+ echo "Powering on Server $2"
+ echo 0 > /sys/class/gpio/gpio${BMC_RDY_GPIO}/value
+ echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
+ echo 0 > /sys/class/gpio/gpio${PWR_GPIO}/value
+ sleep 1
+ echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
+}
+
+power_status() {
+ st=$(cat /sys/class/gpio/gpio${PWR_GOOD}/value)
+ if [ "$st" == "0" ]; then
+ echo "off"
+ else
+ echo "on"
+ fi
+}
+
+power_reset() {
+ echo "Reset on server $2"
+ echo 0 > /sys/class/gpio/gpio${PWR_RESET}/value
+ sleep 0.1
+ echo 1 > /sys/class/gpio/gpio${PWR_RESET}/value
+}
+
+sled_cycle() {
+ i2cset -y 7 0x45 0xd9 c
+}
+
+if [ $# -lt 2 ]; then
echo "Total number of parameter=$#"
echo "Insufficient parameter"
usage;
exit 0;
fi
-if [ $1 != "mb" ]; then
- echo "Invalid parameter1=$1"
- usage;
- exit 0;
+if [ $1 == "sled-cycle" ]; then
+ sled_cycle
fi
-if [ $2 -ne 1 ]; then
- echo "Invalid parameter2=$2, Server $2 not supported"
+if [ $1 != "mb" ]; then
+ echo "Invalid parameter1=$1"
usage;
exit 0;
fi
-if [ $3 = "on" ]; then
- echo "Powering on Server $2"
- echo 0 > /sys/class/gpio/gpio${BMC_RDY_GPIO}/value
- echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
- echo 0 > /sys/class/gpio/gpio${PWR_GPIO}/value
- sleep 1
- echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
-elif [ $3 = "off" ]; then
- echo "Shutting down Server $2"
- echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
- sleep 1
- echo 0 > /sys/class/gpio/gpio${PWR_GPIO}/value
- sleep 6
- echo 1 > /sys/class/gpio/gpio${PWR_GPIO}/value
+if [ $2 = "on" ]; then
+ if [ $(power_status) == "off" ]; then
+ power_on
+ fi
+elif [ $2 = "off" ]; then
+ if [ $(power_status) == "on" ]; then
+ power_off
+ fi
+elif [ $2 == "cycle" ]; then
+ if [ $(power_status) == "on" ]; then
+ power_off
+ else
+ echo "WARNING: Powering on server"
+ fi
+ power_on
+elif [ $2 == "reset" ]; then
+ if [ $(power_status) == "on" ]; then
+ power_reset
+ else
+ echo "ERROR: Server not powered on"
+ fi
+elif [ $2 == "status" ]; then
+ power_status
else
- echo "Invalid parameter3=$3"
+ echo "Invalid parameter2=$2"
usage;
fi