meta-facebook: catalina: phosphor-gpio-monitor: add leak detect gpio pin monitor
Add leak detect gpio pin mornitoring and add corresponding event log.
Change-Id: Ibf0ec1e0d845aaa4e36c310d9b9aecd99f6681e9
Signed-off-by: Potin Lai <potin.lai@quantatw.com>
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-gpio-log@.service b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-gpio-log@.service
new file mode 100644
index 0000000..b44b0ba
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/assert-gpio-log@.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=%i GPIO Assert
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/catalina-gpio-monitor %i assert
+
+SyslogIdentifier=%i-gpio-assert
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
index 2fd42f3..779d856 100644
--- 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
@@ -8,6 +8,27 @@
LINENAME="$1"
STATE="$2"
+logging()
+{
+ MESSAGE="$1"
+ SEVERITY="$2"
+ busctl call \
+ xyz.openbmc_project.Logging /xyz/openbmc_project/logging \
+ xyz.openbmc_project.Logging.Create Create "ssa{ss}" \
+ "$MESSAGE" "$SEVERITY" 0
+}
+
+log_error()
+{
+ logging "$1" "xyz.openbmc_project.Logging.Entry.Level.Error"
+}
+
+log_info()
+{
+ logging "$1" "xyz.openbmc_project.Logging.Entry.Level.Informational"
+}
+
+
do_RUN_POWER_PG_change()
{
if [ "$STATE" = "assert" ]; then
@@ -28,11 +49,41 @@
fi
}
+do_leak_detect_change()
+{
+ if [ "$STATE" = "assert" ]; then
+ LOG_MSG="leak has been detected"
+ else
+ LOG_MSG="leak has been recoverd"
+ fi
+
+ case "$LINENAME" in
+ "LEAK0_DETECT_R" | "LEAK2_DETECT_R")
+ LOG_MSG="A large $LOG_MSG at location $LINENAME"
+ ;;
+ "LEAK1_DETECT_R" | "LEAK3_DETECT_R")
+ LOG_MSG="A small $LOG_MSG at location $LINENAME"
+ ;;
+ *)
+ return 0
+ ;;
+ esac
+
+ if [ "$STATE" = "assert" ]; then
+ log_error "$LOG_MSG"
+ else
+ log_info "$LOG_MSG"
+ fi
+}
+
case $LINENAME in
"RUN_POWER_PG" | "ID_RST_BTN_BMC_N")
FUNC_NAME="do_${LINENAME}_change"
"$FUNC_NAME"
;;
+ "LEAK0_DETECT_R" | "LEAK1_DETECT_R" | "LEAK2_DETECT_R" | "LEAK3_DETECT_R")
+ do_leak_detect_change
+ ;;
*)
echo "Unknown LINENAME = $LINENAME"
exit 1
diff --git a/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-gpio-log@service b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-gpio-log@service
new file mode 100644
index 0000000..5767e1f
--- /dev/null
+++ b/meta-facebook/meta-catalina/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-gpio-log@service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Deassert %i
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/catalina-gpio-monitor %i deassert
+
+SyslogIdentifier=deassert-%i
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
index c34afcf..42d458a 100644
--- 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
@@ -18,5 +18,45 @@
"FALLING": ["deassert-reset-button.service"]
},
"Continue": true
+ },
+ {
+ "Name": "LEAK0_DETECT_R",
+ "LineName": "LEAK0_DETECT_R",
+ "EventMon": "BOTH",
+ "Targets": {
+ "RISING": ["assert-gpio-log@LEAK0_DETECT_R.service"],
+ "FALLING": ["deassert-gpio-log@LEAK0_DETECT_R.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK1_DETECT_R",
+ "LineName": "LEAK1_DETECT_R",
+ "EventMon": "BOTH",
+ "Targets": {
+ "RISING": ["assert-gpio-log@LEAK1_DETECT_R.service"],
+ "FALLING": ["deassert-gpio-log@LEAK1_DETECT_R.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK2_DETECT_R",
+ "LineName": "LEAK2_DETECT_R",
+ "EventMon": "BOTH",
+ "Targets": {
+ "RISING": ["assert-gpio-log@LEAK2_DETECT_R.service"],
+ "FALLING": ["deassert-gpio-log@LEAK2_DETECT_R.service"]
+ },
+ "Continue": true
+ },
+ {
+ "Name": "LEAK3_DETECT_R",
+ "LineName": "LEAK3_DETECT_R",
+ "EventMon": "BOTH",
+ "Targets": {
+ "RISING": ["assert-gpio-log@LEAK3_DETECT_R.service"],
+ "FALLING": ["deassert-gpio-log@LEAK3_DETECT_R.service"]
+ },
+ "Continue": true
}
]