meta-quanta: gbs: Add tray_powercycle.sh

Fix hotswap-power-cycle.service as well.

(From meta-quanta rev: f27143480d654623b6e576b2ce236af3b6f0950d)

Signed-off-by: Brandon Kim <brandonkim@google.com>
Change-Id: I63e105c27a61475ffc84565a933c7c98bd3d268c
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/hotswap-power-cycle.service b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/hotswap-power-cycle.service
index 57724f3..054b2fe 100644
--- a/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/hotswap-power-cycle.service
+++ b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/hotswap-power-cycle.service
@@ -2,13 +2,9 @@
 Description=Power Cycle by Hotswap Controller
 
 [Service]
-EnvironmentFile=/run/psu_timedelay
-ExecStartPre=sleep $PSU_HARDRESET_DELAY
-ExecStart=gpioset gpiochip6 26=1
-Restart=no
 Type=oneshot
-RemainAfterExit=true
-StandardOutput=syslog
+EnvironmentFile=-/run/psu_timedelay
+ExecStart=/usr/bin/tray_powercycle.sh
 
 [Install]
 WantedBy=gbmc-psu-hardreset.target
diff --git a/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/tray_powercycle.sh b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/tray_powercycle.sh
new file mode 100644
index 0000000..5cbf49b
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/tray_powercycle.sh
@@ -0,0 +1,24 @@
+#!/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.
+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
+
+  gpioset gpiochip6 26=1
+}
+
+# Exit without running main() if sourced
+return 0 2>/dev/null
+
+main "$@"