meta-facebook: minerva: monitor pins to record event logs
Add gpio monitor for the below types of pin to record logs:
- Blade presence
- Blade leak detect
- RPU ready
- Cable presence
- Toggle switch
Change-Id: I50e95b84fe3cd76c37c12ad69cbaafd4f7c5b974
Signed-off-by: Yang Chen <yang.chen@quantatw.com>
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/cable-present-assert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/cable-present-assert@.service
new file mode 100644
index 0000000..76b3b89
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/cable-present-assert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Cable Present Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i cable present assert" "CABLE" "%i"
+SyslogIdentifier=%i-cable-present-assert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/cable-present-deassert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/cable-present-deassert@.service
new file mode 100644
index 0000000..a028a7c
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/cable-present-deassert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Cable Present Deassert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i cable present assert" "CABLE" "%i"
+SyslogIdentifier=%i-cable-present-deassert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/leak-detect-assert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/leak-detect-assert@.service
new file mode 100644
index 0000000..7814b78
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/leak-detect-assert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Leak Detect Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i leak detect assert" "BLADE" "%i"
+SyslogIdentifier=%i-leak-detect-assert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/leak-detect-deassert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/leak-detect-deassert@.service
new file mode 100644
index 0000000..4aed4aa
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/leak-detect-deassert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Leak Detect Deassert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i leak detect deassert" "BLADE" "%i"
+SyslogIdentifier=%i-leak-detect-deassert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/logging b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/logging
new file mode 100644
index 0000000..b7849ca
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/logging
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+MESSAGE=$1
+ARG=$2
+VAL=$3
+
+busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging \
+ xyz.openbmc_project.Logging.Create Create "ssa{ss}" "$MESSAGE" \
+ xyz.openbmc_project.Logging.Entry.Level.Error 1 "$ARG" "$VAL"
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/minerva-phosphor-multi-gpio-monitor.json b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/minerva-phosphor-multi-gpio-monitor.json
new file mode 100644
index 0000000..cf13d6a
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/minerva-phosphor-multi-gpio-monitor.json
@@ -0,0 +1,937 @@
+[
+ {
+ "Name": "PRSNT_MTIA_BLADE0_N",
+ "ChipId": "2",
+ "GpioNum": 0,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-0.service"],
+ "RISING": ["present-deassert@mtia-blade-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE1_N",
+ "ChipId": "2",
+ "GpioNum": 2,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-1.service"],
+ "RISING": ["present-deassert@mtia-blade-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE2_N",
+ "ChipId": "2",
+ "GpioNum": 4,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-2.service"],
+ "RISING": ["present-deassert@mtia-blade-2.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE3_N",
+ "ChipId": "2",
+ "GpioNum": 6,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-3.service"],
+ "RISING": ["present-deassert@mtia-blade-3.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE4_N",
+ "ChipId": "2",
+ "GpioNum": 8,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-4.service"],
+ "RISING": ["present-deassert@mtia-blade-4.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE5_N",
+ "ChipId": "2",
+ "GpioNum": 10,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-5.service"],
+ "RISING": ["present-deassert@mtia-blade-5.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE6_N",
+ "ChipId": "2",
+ "GpioNum": 12,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-6.service"],
+ "RISING": ["present-deassert@mtia-blade-6.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE7_N",
+ "ChipId": "2",
+ "GpioNum": 14,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-7.service"],
+ "RISING": ["present-deassert@mtia-blade-7.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE8_N",
+ "ChipId": "2",
+ "GpioNum": 16,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-8.service"],
+ "RISING": ["present-deassert@mtia-blade-8.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE9_N",
+ "ChipId": "2",
+ "GpioNum": 18,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-9.service"],
+ "RISING": ["present-deassert@mtia-blade-9.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE10_N",
+ "ChipId": "2",
+ "GpioNum": 20,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-10.service"],
+ "RISING": ["present-deassert@mtia-blade-10.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE11_N",
+ "ChipId": "2",
+ "GpioNum": 22,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-11.service"],
+ "RISING": ["present-deassert@mtia-blade-11.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE12_N",
+ "ChipId": "2",
+ "GpioNum": 24,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-12.service"],
+ "RISING": ["present-deassert@mtia-blade-12.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE13_N",
+ "ChipId": "2",
+ "GpioNum": 26,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-13.service"],
+ "RISING": ["present-deassert@mtia-blade-13.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE14_N",
+ "ChipId": "2",
+ "GpioNum": 28,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-14.service"],
+ "RISING": ["present-deassert@mtia-blade-14.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_MTIA_BLADE15_N",
+ "ChipId": "2",
+ "GpioNum": 30,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@mtia-blade-15.service"],
+ "RISING": ["present-deassert@mtia-blade-15.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_NW_BLADE0_N",
+ "ChipId": "2",
+ "GpioNum": 32,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@network-blade-0.service"],
+ "RISING": ["present-deassert@network-blade-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_NW_BLADE1_N",
+ "ChipId": "2",
+ "GpioNum": 34,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@network-blade-1.service"],
+ "RISING": ["present-deassert@network-blade-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_NW_BLADE2_N",
+ "ChipId": "2",
+ "GpioNum": 36,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@network-blade-2.service"],
+ "RISING": ["present-deassert@network-blade-2.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_NW_BLADE3_N",
+ "ChipId": "2",
+ "GpioNum": 38,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@network-blade-3.service"],
+ "RISING": ["present-deassert@network-blade-3.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_NW_BLADE4_N",
+ "ChipId": "2",
+ "GpioNum": 40,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@network-blade-4.service"],
+ "RISING": ["present-deassert@network-blade-4.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_NW_BLADE5_N",
+ "ChipId": "2",
+ "GpioNum": 42,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@network-blade-5.service"],
+ "RISING": ["present-deassert@network-blade-5.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_FCB_TOP_0_N",
+ "ChipId": "2",
+ "GpioNum": 44,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@fcb-top-0.service"],
+ "RISING": ["present-deassert@fcb-top-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_FCB_TOP_1_N",
+ "ChipId": "2",
+ "GpioNum": 46,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@fcb-top-1.service"],
+ "RISING": ["present-deassert@fcb-top-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_FCB_MIDDLE_0_N",
+ "ChipId": "2",
+ "GpioNum": 48,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@fcb-mid-0.service"],
+ "RISING": ["present-deassert@fcb-mid-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_FCB_MIDDLE_1_N",
+ "ChipId": "2",
+ "GpioNum": 50,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@fcb-mid-1.service"],
+ "RISING": ["present-deassert@fcb-mid-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_FCB_BOTTOM_0_N",
+ "ChipId": "2",
+ "GpioNum": 52,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@fcb-bot-0.service"],
+ "RISING": ["present-deassert@fcb-bot-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PRSNT_FCB_BOTTOM_1_N",
+ "ChipId": "2",
+ "GpioNum": 54,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@fcb-bot-1.service"],
+ "RISING": ["present-deassert@fcb-bot-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE0_PWROK",
+ "ChipId": "2",
+ "GpioNum": 56,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-0.service"],
+ "RISING": ["power-good-deassert@mtia-blade-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE1_PWROK",
+ "ChipId": "2",
+ "GpioNum": 58,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-1.service"],
+ "RISING": ["power-good-deassert@mtia-blade-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE2_PWROK",
+ "ChipId": "2",
+ "GpioNum": 60,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-2.service"],
+ "RISING": ["power-good-deassert@mtia-blade-2.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE3_PWROK",
+ "ChipId": "2",
+ "GpioNum": 62,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-3.service"],
+ "RISING": ["power-good-deassert@mtia-blade-3.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE4_PWROK",
+ "ChipId": "2",
+ "GpioNum": 64,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-4.service"],
+ "RISING": ["power-good-deassert@mtia-blade-4.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE5_PWROK",
+ "ChipId": "2",
+ "GpioNum": 66,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-5.service"],
+ "RISING": ["power-good-deassert@mtia-blade-5.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE6_PWROK",
+ "ChipId": "2",
+ "GpioNum": 68,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-6.service"],
+ "RISING": ["power-good-deassert@mtia-blade-6.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE7_PWROK",
+ "ChipId": "2",
+ "GpioNum": 70,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-7.service"],
+ "RISING": ["power-good-deassert@mtia-blade-7.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE8_PWROK",
+ "ChipId": "2",
+ "GpioNum": 72,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-8.service"],
+ "RISING": ["power-good-deassert@mtia-blade-8.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE9_PWROK",
+ "ChipId": "2",
+ "GpioNum": 74,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-9.service"],
+ "RISING": ["power-good-deassert@mtia-blade-9.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE10_PWROK",
+ "ChipId": "2",
+ "GpioNum": 76,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-10.service"],
+ "RISING": ["power-good-deassert@mtia-blade-10.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE11_PWROK",
+ "ChipId": "2",
+ "GpioNum": 78,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-11.service"],
+ "RISING": ["power-good-deassert@mtia-blade-11.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE12_PWROK",
+ "ChipId": "2",
+ "GpioNum": 80,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-12.service"],
+ "RISING": ["power-good-deassert@mtia-blade-12.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE13_PWROK",
+ "ChipId": "2",
+ "GpioNum": 82,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-13.service"],
+ "RISING": ["power-good-deassert@mtia-blade-13.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE14_PWROK",
+ "ChipId": "2",
+ "GpioNum": 84,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-14.service"],
+ "RISING": ["power-good-deassert@mtia-blade-14.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_MTIA_BLADE15_PWROK",
+ "ChipId": "2",
+ "GpioNum": 86,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@mtia-blade-15.service"],
+ "RISING": ["power-good-deassert@mtia-blade-15.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_NW_BLADE0_PWROK",
+ "ChipId": "2",
+ "GpioNum": 88,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@network-blade-0.service"],
+ "RISING": ["power-good-deassert@network-blade-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_NW_BLADE1_PWROK",
+ "ChipId": "2",
+ "GpioNum": 90,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@network-blade-1.service"],
+ "RISING": ["power-good-deassert@network-blade-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_NW_BLADE2_PWROK",
+ "ChipId": "2",
+ "GpioNum": 92,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@network-blade-2.service"],
+ "RISING": ["power-good-deassert@network-blade-2.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_NW_BLADE3_PWROK",
+ "ChipId": "2",
+ "GpioNum": 94,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@network-blade-3.service"],
+ "RISING": ["power-good-deassert@network-blade-3.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_NW_BLADE4_PWROK",
+ "ChipId": "2",
+ "GpioNum": 96,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@network-blade-4.service"],
+ "RISING": ["power-good-deassert@network-blade-4.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_NW_BLADE5_PWROK",
+ "ChipId": "2",
+ "GpioNum": 98,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@network-blade-5.service"],
+ "RISING": ["power-good-deassert@network-blade-5.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_FCB_TOP_0_PWROK",
+ "ChipId": "2",
+ "GpioNum": 100,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@fcb-top-0.service"],
+ "RISING": ["power-good-deassert@fcb-top-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_FCB_TOP_1_PWROK",
+ "ChipId": "2",
+ "GpioNum": 102,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@fcb-top-1.service"],
+ "RISING": ["power-good-deassert@fcb-top-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_FCB_MIDDLE_0_PWROK",
+ "ChipId": "2",
+ "GpioNum": 104,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@fcb-mid-0.service"],
+ "RISING": ["power-good-deassert@fcb-mid-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_FCB_MIDDLE_1_PWROK",
+ "ChipId": "2",
+ "GpioNum": 106,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@fcb-mid-1.service"],
+ "RISING": ["power-good-deassert@fcb-mid-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_FCB_BOTTOM_0_PWROK",
+ "ChipId": "2",
+ "GpioNum": 108,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@fcb-bot-0.service"],
+ "RISING": ["power-good-deassert@fcb-bot-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "PWRGD_FCB_BOTTOM_1_PWROK",
+ "ChipId": "2",
+ "GpioNum": 110,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["power-good-assert@fcb-bot-1.service"],
+ "RISING": ["power-good-deassert@fcb-bot-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE0_N",
+ "ChipId": "2",
+ "GpioNum": 112,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-0.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE1_N",
+ "ChipId": "2",
+ "GpioNum": 114,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-1.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE2_N",
+ "ChipId": "2",
+ "GpioNum": 116,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-2.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-2.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE3_N",
+ "ChipId": "2",
+ "GpioNum": 118,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-3.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-3.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE4_N",
+ "ChipId": "2",
+ "GpioNum": 120,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-4.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-4.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE5_N",
+ "ChipId": "2",
+ "GpioNum": 122,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-5.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-5.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE6_N",
+ "ChipId": "2",
+ "GpioNum": 124,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-6.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-6.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE7_N",
+ "ChipId": "2",
+ "GpioNum": 126,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-7.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-7.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE8_N",
+ "ChipId": "2",
+ "GpioNum": 128,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-8.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-8.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE9_N",
+ "ChipId": "2",
+ "GpioNum": 130,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-9.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-9.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE10_N",
+ "ChipId": "2",
+ "GpioNum": 132,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-10.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-10.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE11_N",
+ "ChipId": "2",
+ "GpioNum": 134,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-11.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-11.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE12_N",
+ "ChipId": "2",
+ "GpioNum": 136,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-12.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-12.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE13_N",
+ "ChipId": "2",
+ "GpioNum": 138,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-13.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-13.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE14_N",
+ "ChipId": "2",
+ "GpioNum": 140,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-14.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-14.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_MTIA_BLADE15_N",
+ "ChipId": "2",
+ "GpioNum": 142,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@mtia-blade-15.service"],
+ "RISING": ["leak-detect-deassert@mtia-blade-15.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_NW_BLADE0_N",
+ "ChipId": "2",
+ "GpioNum": 144,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@network-blade-0.service"],
+ "RISING": ["leak-detect-deassert@network-blade-0.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_NW_BLADE1_N",
+ "ChipId": "2",
+ "GpioNum": 146,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@network-blade-1.service"],
+ "RISING": ["leak-detect-deassert@network-blade-1.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_NW_BLADE2_N",
+ "ChipId": "2",
+ "GpioNum": 148,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@network-blade-2.service"],
+ "RISING": ["leak-detect-deassert@network-blade-2.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_NW_BLADE3_N",
+ "ChipId": "2",
+ "GpioNum": 150,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@network-blade-3.service"],
+ "RISING": ["leak-detect-deassert@network-blade-3.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_NW_BLADE4_N",
+ "ChipId": "2",
+ "GpioNum": 152,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@network-blade-4.service"],
+ "RISING": ["leak-detect-deassert@network-blade-4.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK_DETECT_NW_BLADE5_N",
+ "ChipId": "2",
+ "GpioNum": 154,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["leak-detect-assert@network-blade-5.service"],
+ "RISING": ["leak-detect-deassert@network-blade-5.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "RPU_READY",
+ "ChipId": "2",
+ "GpioNum": 200,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["rpu-ready-deassert.service"],
+ "RISING": ["rpu-ready-assert.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "CMM_CABLE_CARTRIDGE_PRSNT_TOP_N",
+ "ChipId": "2",
+ "GpioNum": 224,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["cable-present-assert@cmm-cartridge-top.service"],
+ "RISING": ["cable-present-deassert@cmm-cartridge-top.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "CMM_CABLE_CARTRIDGE_PRSNT_BOT_N",
+ "ChipId": "2",
+ "GpioNum": 222,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["cable-present-assert@cmm-cartridge-bot.service"],
+ "RISING": ["cable-present-deassert@cmm-cartridge-bot.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "BOT_BCB_CABLE_PRSNT_N",
+ "ChipId": "2",
+ "GpioNum": 226,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["cable-present-assert@bcb-bot.service"],
+ "RISING": ["cable-present-deassert@bcb-bot.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "TOP_BCB_CABLE_PRSNT_N",
+ "ChipId": "2",
+ "GpioNum": 228,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["cable-present-assert@bcb-top.service"],
+ "RISING": ["cable-present-deassert@bcb-top.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "CR_TOGGLE_BOOT_N",
+ "ChipId": "2",
+ "GpioNum": 216,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["present-assert@cmm-blade-toggle-switch.service"],
+ "RISING": ["present-deassert@cmm-blade-toggle-switch.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "MGMT_SFP_PRSNT_N",
+ "ChipId": "2",
+ "GpioNum": 238,
+ "EventMon": "BOTH",
+ "Targets": {
+ "FALLING": ["sfp-present-assert.service"],
+ "RISING": ["sfp-present-deassert.service"]
+ },
+ "Continue": true
+ }
+]
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/power-good-assert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/power-good-assert@.service
new file mode 100644
index 0000000..38d179f
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/power-good-assert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Power Good Status Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i power good assert" "BLADE" "%i"
+SyslogIdentifier=%i-power-good-assert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/power-good-deassert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/power-good-deassert@.service
new file mode 100644
index 0000000..fd7ad85
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/power-good-deassert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Power Good Status Deassert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i power good deassert" "BLADE" "%i"
+SyslogIdentifier=%i-power-good-deassert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/present-assert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/present-assert@.service
new file mode 100644
index 0000000..3f35e55
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/present-assert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Present Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i present assert" "BLADE" "%i"
+SyslogIdentifier=%i-present-assert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/present-deassert@.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/present-deassert@.service
new file mode 100644
index 0000000..255bdee
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/present-deassert@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=%i Present Deassert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "%i present assert" "BLADE" "%i"
+SyslogIdentifier=%i-present-deassert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/rpu-ready-assert.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/rpu-ready-assert.service
new file mode 100644
index 0000000..19d8811
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/rpu-ready-assert.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=RPU ready Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "RPU ready assert" "AALC" "RPU"
+SyslogIdentifier=rpu-ready-assert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/rpu-ready-deassert.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/rpu-ready-deassert.service
new file mode 100644
index 0000000..b028e03
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/rpu-ready-deassert.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=RPU ready Deassert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/logging "RPU ready deassert" "AALC" "RPU"
+SyslogIdentifier=rpu-ready-deassert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-assert.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-assert.service
new file mode 100644
index 0000000..5388faa
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-assert.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=MGMT SFP Present Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/sfp-present-check 0
+SyslogIdentifier=sfp-present-assert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-check b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-check
new file mode 100644
index 0000000..980ee43
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-check
@@ -0,0 +1,9 @@
+#!/bin/bash
+# shellcheck source=meta-facebook/meta-minerva/recipes-minerva/plat-tool/files/minerva-common-functions
+source /usr/libexec/minerva-common-functions
+
+if [ "$1" == "0" ]; then
+ set_gpio MGMT_SFP_TX_DIS 0
+else
+ set_gpio MGMT_SFP_TX_DIS 1
+fi
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-deassert.service b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-deassert.service
new file mode 100644
index 0000000..953d6eb
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor/sfp-present-deassert.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=MGMT SFP Present Deassert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/sfp-present-check.sh 1
+SyslogIdentifier=sfp-present-deassert
diff --git a/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
new file mode 100644
index 0000000..b1b4603
--- /dev/null
+++ b/meta-facebook/meta-minerva/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
@@ -0,0 +1,48 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+inherit obmc-phosphor-systemd systemd
+
+SERVICE_LIST = "present-assert@.service \
+ present-deassert@.service \
+ power-good-assert@.service \
+ power-good-deassert@.service \
+ leak-detect-assert@.service \
+ leak-detect-deassert@.service \
+ rpu-ready-assert.service \
+ rpu-ready-deassert.service \
+ cable-present-assert@.service \
+ cable-present-deassert@.service \
+ sfp-present-assert.service \
+ sfp-present-deassert.service \
+ "
+
+SERVICE_FILE_FMT = "file://{0}"
+
+SRC_URI += "file://minerva-phosphor-multi-gpio-monitor.json \
+ file://logging \
+ file://sfp-present-check \
+ ${@compose_list(d, 'SERVICE_FILE_FMT', 'SERVICE_LIST')} \
+ "
+
+RDEPENDS:${PN}:append: = " bash"
+
+FILES:${PN} += "${systemd_system_unitdir}/*"
+
+SYSTEMD_SERVICE:${PN} += "${SERVICE_LIST}"
+
+SYSTEMD_AUTO_ENABLE = "enable"
+
+do_install:append:() {
+ install -d ${D}${datadir}/phosphor-gpio-monitor
+ install -m 0644 ${WORKDIR}/minerva-phosphor-multi-gpio-monitor.json \
+ ${D}${datadir}/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json
+
+ for s in ${SERVICE_LIST}
+ do
+ install -m 0644 ${WORKDIR}/${s} ${D}${systemd_system_unitdir}/${s}
+ done
+
+ install -d ${D}${libexecdir}/${PN}
+ install -m 0777 ${WORKDIR}/logging ${D}${libexecdir}/${PN}/
+ install -m 0777 ${WORKDIR}/sfp-present-check ${D}${libexecdir}/${PN}/
+}