meta-facebook: harma: Add power card enable check

When the CMM turns off the MB power,
it can cause the SGPIO value to change from low to high,
which can lead to the BMC misjudging the power status.
To prevent this, we will add a power card enable pin to check the status.
This pin is a direct GPIO and is pulled up by standby power.

Change-Id: Iea1eba6a591bc45d2a283720b51b7512679904d2
Signed-off-by: Peter Yin <peter.yin@quantatw.com>
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-power-good b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-power-good
index cc2258f..00bf4fa 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-power-good
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-power-good
@@ -1,9 +1,18 @@
 #!/bin/bash
 
-# Set Host Power Status Running
-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
+# shellcheck source=meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
+source /usr/libexec/fb-common-functions
 
-systemctl start obmc-led-group-start@power_on.service
+# Set Host Power Status Running
+if [ "$(get_gpio "power-card-enable")" -eq 0 ]; then
+    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
+
+    systemctl start obmc-led-group-start@power_on.service
+fi
 
 # The hardware disables the multiplexer in standby
 # to prevent sending a command by mistake to the retimer when it boots up.
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging
index ce69c4e..ae96b13 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging
@@ -1,10 +1,26 @@
 #!/bin/bash
 
+# shellcheck source=meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
+source /usr/libexec/fb-common-functions
+
 MESSAGE=$1
 ARG=$2
 VAL=$3
 
-busctl call \
+# remove prefix from 0_reset-cause-platrst to reset-cause-platrst
+loginfo="${MESSAGE#*_}"
+
+# get gpio chip id
+number="${MESSAGE%%_*}"
+
+# get assert or deassert message
+action=$(echo "$MESSAGE" | awk '{print $NF}')
+
+gpio_msg="${VAL#*_}"
+
+if [ "$(get_gpio "power-card-enable")" -eq 0 ] || [ "$number" -ne 2 ] || [ "$action" == "assert" ]; then
+    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"
+    xyz.openbmc_project.Logging.Create Create "ssa{ss}" "$loginfo" \
+    xyz.openbmc_project.Logging.Entry.Level.Error 1 "$ARG" "$gpio_msg"
+fi
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/multi-gpios-sys-init b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/multi-gpios-sys-init
index 4e7dd65..2a8af58 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/multi-gpios-sys-init
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/multi-gpios-sys-init
@@ -4,7 +4,7 @@
 source /usr/libexec/fb-common-functions
 
 host_led_init() {
-  if [ "$(get_gpio power-host-good)" -eq 1 ]; then
+  if [ "$(get_gpio "power-host-good")" -eq 1 ] && [ "$(get_gpio "power-card-enable")" -eq 0 ]; then
     systemctl start obmc-led-group-start@power_on.service
   else
     systemctl start obmc-led-group-stop@power_on.service
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json
index eb6c789..7f225c2 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json
@@ -5,8 +5,8 @@
         "GpioNum": 16,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@reset-cause-platrst.service"],
-            "FALLING": ["assert-gpio-log@reset-cause-platrst.service"]
+            "RISING": ["deassert-gpio-log@0_reset-cause-platrst.service"],
+            "FALLING": ["assert-gpio-log@0_reset-cause-platrst.service"]
         },
         "Continue": true
     },
@@ -27,8 +27,8 @@
         "GpioNum": 120,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@power-button.service"],
-            "FALLING": ["assert-gpio-log@power-button.service"]
+            "RISING": ["deassert-gpio-log@0_power-button.service"],
+            "FALLING": ["assert-gpio-log@0_power-button.service"]
         },
         "Continue": true
     },
@@ -38,9 +38,8 @@
         "GpioNum": 122,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@reset-button.service","deassert-reset-button.service"],
-            "FALLING": ["assert-gpio-log@reset-button.service","assert-reset-button.service"]
-
+            "RISING": ["deassert-gpio-log@0_reset-button.service","deassert-reset-button.service"],
+            "FALLING": ["assert-gpio-log@0_reset-button.service","assert-reset-button.service"]
         },
         "Continue": true
     },
@@ -60,7 +59,7 @@
         "GpioNum": 0,
         "EventMon": "FALLING",
         "Targets": {
-            "FALLING": ["assert-gpio-log@ac-power-button.service"]
+            "FALLING": ["assert-gpio-log@1_ac-power-button.service"]
         },
         "Continue": true
     },
@@ -70,8 +69,8 @@
         "GpioNum": 60,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-power-good.service", "deassert-gpio-log@power-host-good.service"],
-            "FALLING": ["assert-power-good.service", "assert-gpio-log@power-host-good.service"]
+            "RISING": ["deassert-power-good.service", "deassert-gpio-log@2_power-host-good.service"],
+            "FALLING": ["assert-power-good.service", "assert-gpio-log@2_power-host-good.service"]
 
         },
         "Continue": true
@@ -94,8 +93,8 @@
         "GpioNum": 92,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@leakage-detect-alert.service"],
-            "FALLING": ["assert-gpio-log@leakage-detect-alert.service"]
+            "RISING": ["deassert-gpio-log@0_leakage-detect-alert.service"],
+            "FALLING": ["assert-gpio-log@0_leakage-detect-alert.service"]
         },
         "Continue": true
     },
@@ -105,8 +104,8 @@
         "GpioNum": 174,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@irq-uv-detect-alert.service"],
-            "FALLING": ["assert-gpio-log@irq-uv-detect-alert.service"]
+            "RISING": ["deassert-gpio-log@2_irq-uv-detect-alert.service"],
+            "FALLING": ["assert-gpio-log@2_irq-uv-detect-alert.service"]
         },
         "Continue": true
     },
@@ -116,8 +115,8 @@
         "GpioNum": 176,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@irq-hsc-alert.service"],
-            "FALLING": ["assert-gpio-log@irq-hsc-alert.service"]
+            "RISING": ["deassert-gpio-log@2_irq-hsc-alert.service"],
+            "FALLING": ["assert-gpio-log@2_irq-hsc-alert.service"]
         },
         "Continue": true
     },
@@ -127,8 +126,8 @@
         "GpioNum": 178,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@cpu0-prochot-alert.service"],
-            "FALLING": ["assert-gpio-log@cpu0-prochot-alert.service"]
+            "RISING": ["deassert-gpio-log@2_cpu0-prochot-alert.service"],
+            "FALLING": ["assert-gpio-log@2_cpu0-prochot-alert.service"]
         },
         "Continue": true
     },
@@ -138,7 +137,7 @@
         "GpioNum": 180,
         "EventMon": "FALLING",
         "Targets": {
-            "FALLING": ["assert-gpio-log@cpu0-thermtrip-alert.service"]
+            "FALLING": ["assert-gpio-log@2_cpu0-thermtrip-alert.service"]
         },
         "Continue": true
     },
@@ -148,8 +147,8 @@
         "GpioNum": 182,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@reset-cause-pcie.service"],
-            "FALLING": ["assert-gpio-log@reset-cause-pcie.service"]
+            "RISING": ["deassert-gpio-log@2_reset-cause-pcie.service"],
+            "FALLING": ["assert-gpio-log@2_reset-cause-pcie.service"]
         },
         "Continue": true
     },
@@ -159,8 +158,8 @@
         "GpioNum": 184,
         "EventMon": "BOTH",
         "Targets": {
-            "RISING": ["deassert-gpio-log@pvdd11-ocp-alert.service"],
-            "FALLING": ["assert-gpio-log@pvdd11-ocp-alert.service"]
+            "RISING": ["deassert-gpio-log@2_pvdd11-ocp-alert.service"],
+            "FALLING": ["assert-gpio-log@2_pvdd11-ocp-alert.service"]
         },
         "Continue": true
     }
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
index 253bf18..3a3005d 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
@@ -5,7 +5,7 @@
 
 # Power Good Status
 power_status() {
-    if [ "$(get_gpio "host0-ready")" -eq 1 ]; then
+    if [ "$(get_gpio "host0-ready")" -eq 1 ] && [ "$(get_gpio "power-card-enable")" -eq 0 ] ; then
         echo "on"
     else
         echo "off"