blob: 01c52deac19ed884d3798cbc407a36cf61c89027 [file] [log] [blame]
#!/bin/bash
#
# PSU hard reset (power cycle) script.
#
# Power cycle the entire tray by setting the PSU hotswap reset (GPIO218) to high
#
# Global variable: PSU_HARDRESET_DELAY specifies the number of seconds to wait
# before pulling the trigger. If not specified or zero, the script power cycles
# immediately.
##################################################
# Stop the phosphor-hwmon daemon
# Return:
# 0 if success, non-zero if error
##################################################
stop_phosphor_hwmon() {
if (( $# != 0 )); then
echo 'Usage: stop_phosphor_hwmon' >&2
return 1
fi
echo "Stopping phosphor-hwmon" >&2
local srv='system-xyz.openbmc_project.Hwmon.slice'
systemctl stop "${srv}"
}
main() {
# Sleep PSU_HARDRESET_DELAY seconds
local psu_delay=$((PSU_HARDRESET_DELAY))
if ((psu_delay > 0)); then
echo "Sleeping ${psu_delay} seconds before PSU hard reset!"
sleep "${psu_delay}"
fi
# Stop phosphor-hwmon so that ADM1272 powercycle doesn't happen
# in the middle of an i2c transaction and stuck the bus low
stop_phosphor_hwmon
gpioset gpiochip6 26=1
}
# Exit without running main() if sourced
return 0 2>/dev/null
main "$@"