1#!/bin/bash
2#
3# PSU hard reset (power cycle) script.
4#
5# Power cycle the entire tray by setting the PSU hotswap reset (GPIO218) to high
6#
7# Global variable: PSU_HARDRESET_DELAY specifies the number of seconds to wait
8# before pulling the trigger. If not specified or zero, the script power cycles
9# immediately.
10
11##################################################
12# Stop the phosphor-hwmon daemon
13# Return:
14#   0 if success, non-zero if error
15##################################################
16stop_phosphor_hwmon() {
17  if (( $# != 0 )); then
18    echo 'Usage: stop_phosphor_hwmon' >&2
19    return 1
20  fi
21
22  echo "Stopping phosphor-hwmon" >&2
23  local srv='system-xyz.openbmc_project.Hwmon.slice'
24  systemctl stop "${srv}"
25}
26
27main() {
28  # Stop phosphor-hwmon so that ADM1272 powercycle doesn't happen
29  # in the middle of an i2c transaction and stuck the bus low
30  stop_phosphor_hwmon "$@"
31
32  gpioset gpiochip6 26=1
33}
34
35# Exit without running main() if sourced
36if ! (return 0 2>/dev/null) ; then
37    main "$@"
38fi
39