summaryrefslogtreecommitdiff
path: root/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle
diff options
context:
space:
mode:
Diffstat (limited to 'meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle')
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/hotswap-power-cycle.service10
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/tray_powercycle.sh24
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb26
3 files changed, 60 insertions, 0 deletions
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
new file mode 100644
index 000000000..054b2fe6d
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/files/hotswap-power-cycle.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Power Cycle by Hotswap Controller
+
+[Service]
+Type=oneshot
+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 000000000..5cbf49bb5
--- /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 "$@"
diff --git a/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb
new file mode 100644
index 000000000..6bf7bb69f
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Power Cycle by Hotswap Controller"
+DESCRIPTION = "Power Cycle by Hotswap Controller Daemon"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+
+DEPENDS += "systemd"
+RDEPENDS_${PN} += "bash"
+
+SRC_URI = " file://hotswap-power-cycle.service \
+ file://tray_powercycle.sh \
+ "
+
+do_install() {
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/hotswap-power-cycle.service ${D}${systemd_system_unitdir}
+
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/tray_powercycle.sh ${D}${bindir}
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "hotswap-power-cycle.service"
+