diff options
Diffstat (limited to 'meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle')
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" + |