mate-facebook: catalina: enable gpio monitor service
Enable gpio monitor service and add actions of GPIO pins below.
- RUN_POWER_PG
- ID_RST_BTN_BMC_N
Change-Id: I564cad2ef249721c61f7526b18d81dc45e1a1d2f
Signed-off-by: Potin Lai <potin.lai@quantatw.com>
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-reset-button.service b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-reset-button.service
new file mode 100644
index 0000000..1004e5b
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-reset-button.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Assert RUN_POWER_PG
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/catalina-gpio-monitor ID_RST_BTN_BMC_N assert
+
+SyslogIdentifier=assert-run-power-pg
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-run-power-pg.service b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-run-power-pg.service
new file mode 100644
index 0000000..e8a1e24
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-run-power-pg.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Assert RUN_POWER_PG
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/catalina-gpio-monitor RUN_POWER_PG assert
+
+SyslogIdentifier=assert-run-power-pg
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/catalina-gpio-monitor b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/catalina-gpio-monitor
new file mode 100644
index 0000000..c4d2f4f
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/catalina-gpio-monitor
@@ -0,0 +1,40 @@
+#!/bin/bash
+# shellcheck source=meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
+source /usr/libexec/fb-common-functions
+
+GPIO_HIGH=1
+GPIO_LOW=0
+
+LINENAME="$1"
+STATE="$2"
+
+do_RUN_POWER_PG_change()
+{
+ if [ "$STATE" = "assert" ]; then
+ set_gpio "PCI_MUX_SEL" "$GPIO_HIGH"
+ busctl set-property xyz.openbmc_project.State.Host0 /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host CurrentHostState s xyz.openbmc_project.State.Host.HostState.Running
+ else
+ set_gpio "PCI_MUX_SEL" "$GPIO_LOW"
+ busctl set-property xyz.openbmc_project.State.Host0 /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host CurrentHostState s xyz.openbmc_project.State.Host.HostState.Off
+ fi
+}
+
+do_ID_RST_BTN_BMC_N_change()
+{
+ if [ "$STATE" = "assert" ]; then
+ set_gpio "RST_BMC_RSTBTN_OUT_N" "$GPIO_HIGH"
+ else
+ set_gpio "RST_BMC_RSTBTN_OUT_N" "$GPIO_LOW"
+ fi
+}
+
+case $LINENAME in
+ "RUN_POWER_PG")
+ FUNC_NAME="do_${LINENAME}_change"
+ "$FUNC_NAME"
+ ;;
+ *)
+ echo "Unknown LINENAME = $LINENAME"
+ exit 1
+ ;;
+esac
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-reset-button.service b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-reset-button.service
new file mode 100644
index 0000000..2f5da96
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-reset-button.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Deassert RUN_POWER_PG
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/catalina-gpio-monitor ID_RST_BTN_BMC_N deassert
+
+SyslogIdentifier=deassert-run-power-pg
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-run-power-pg.service b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-run-power-pg.service
new file mode 100644
index 0000000..4301e89
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-run-power-pg.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Deassert RUN_POWER_PG
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/catalina-gpio-monitor RUN_POWER_PG deassert
+
+SyslogIdentifier=deassert-run-power-pg
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json
new file mode 100644
index 0000000..c34afcf
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json
@@ -0,0 +1,22 @@
+[
+ {
+ "Name": "RUN_POWER_PG",
+ "LineName": "RUN_POWER_PG",
+ "EventMon": "BOTH",
+ "Targets": {
+ "RISING": ["assert-run-power-pg.service"],
+ "FALLING": ["deassert-run-power-pg.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "ID_RST_BTN_BMC_N",
+ "LineName": "ID_RST_BTN_BMC_N",
+ "EventMon": "BOTH",
+ "Targets": {
+ "RISING": ["assert-reset-button.service"],
+ "FALLING": ["deassert-reset-button.service"]
+ },
+ "Continue": true
+ }
+]
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
new file mode 100644
index 0000000..0f90a58
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
@@ -0,0 +1,26 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+inherit obmc-phosphor-systemd systemd
+
+SRC_URI += " \
+ file://catalina-gpio-monitor \
+ file://phosphor-multi-gpio-monitor.json \
+ "
+
+RDEPENDS:${PN}:append = " bash"
+
+FILES:${PN} += "${systemd_system_unitdir}/*"
+
+SYSTEMD_SERVICE:${PN}-monitor += " \
+ assert-run-power-pg.service \
+ deassert-run-power-pg.service \
+ "
+
+SYSTEMD_AUTO_ENABLE = "enable"
+
+do_install:append:() {
+ install -d ${D}${datadir}/${PN}
+ install -d ${D}${libexecdir}/${PN}
+
+ install -m 0755 ${WORKDIR}/catalina-gpio-monitor ${D}${libexecdir}/${PN}/catalina-gpio-monitor
+}
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/images/fb-catalina-phosphor-image.inc b/meta-facebook/meta-catalina/recipes-phosphor/images/fb-catalina-phosphor-image.inc
index 5b98f30..77bd70b 100644
--- a/meta-facebook/meta-catalina/recipes-phosphor/images/fb-catalina-phosphor-image.inc
+++ b/meta-facebook/meta-catalina/recipes-phosphor/images/fb-catalina-phosphor-image.inc
@@ -8,6 +8,7 @@
# Monitor presence gpio status
OBMC_IMAGE_EXTRA_INSTALL:append = " \
+ phosphor-gpio-monitor \
phosphor-gpio-monitor-presence \
"