meta-facebook: harma: add uart select

Display the channel information when the select button
is pressed on the debug card.

Change-Id: I6cbd6fafe33272de90595f6e620d691f94c3ee76
Signed-off-by: Peter Yin <peter.yin@quantatw.com>
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-uart-switch-button b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-uart-switch-button
new file mode 100644
index 0000000..1da52ed
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-uart-switch-button
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# shellcheck source=meta-facebook/recipes-fb/obmc_functions/files/fb-common-functions
+source /usr/libexec/fb-common-functions
+
+uart_lsb=$(get_gpio "uart-switch-lsb")
+uart_msb=$(get_gpio "uart-switch-msb")
+uart_lsb=$((1 - uart_lsb))
+uart_msb=$((1 - uart_msb))
+
+uart_sel=$((uart_msb+(uart_lsb<<1)))
+
+set_postcode_leds() {
+    num=$1
+    for i in {0..7}; do
+        bit_value=$(( (num >> i) & 1 ))
+        set_gpio "led-postcode-$i" $bit_value
+    done
+}
+
+set_postcode_leds "$uart_sel"
+
+exit 0
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-uart-switch-button.service b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-uart-switch-button.service
new file mode 100644
index 0000000..b7e491e
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/deassert-uart-switch-button.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Deassert Uart Switch Button
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/deassert-uart-switch-button
+
+SyslogIdentifier=deassert-uart-switch-button
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 8ccfccd..8bdda2c 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
@@ -1,13 +1,23 @@
 [
     {
-        "Name": "reset-button",
+        "Name": "reset-cause-platrst",
         "ChipId": "0",
-        "GpioNum": 122,
+        "GpioNum": 16,
         "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@reset-cause-platrst.service"],
+            "FALLING": ["assert-gpio-log@reset-cause-platrst.service"]
+        },
+        "Continue": true
+    },
+    {
+        "Name": "power-hsc-good",
+        "ChipId": "0",
+        "GpioNum": 21,
+        "EventMon": "BOTH",
+        "Targets": {
+            "RISING": ["host-power-on.service"],
+            "FALLING": ["host-power-off.service"]
         },
         "Continue": true
     },
@@ -23,6 +33,28 @@
         "Continue": true
     },
     {
+        "Name": "reset-button",
+        "ChipId": "0",
+        "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"]
+
+        },
+        "Continue": true
+    },
+    {
+        "Name": "uart-switch-button",
+        "ChipId": "0",
+        "GpioNum": 135,
+        "EventMon": "RISING",
+        "Targets": {
+            "RISING": ["deassert-uart-switch-button.service"]
+        },
+        "Continue": true
+    },
+    {
         "Name": "ac-power-button",
         "ChipId": "1",
         "GpioNum": 0,
@@ -33,6 +65,41 @@
         "Continue": true
     },
     {
+        "Name": "power-host-good",
+        "ChipId": "2",
+        "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"]
+
+        },
+        "Continue": true
+    },
+    {
+        "Name": "post-end-n",
+        "ChipId": "2",
+        "GpioNum": 66,
+        "EventMon": "BOTH",
+        "Targets": {
+            "RISING": ["deassert-post-end.service"],
+            "FALLING": ["assert-post-end.service"]
+
+        },
+        "Continue": true
+    },
+    {
+        "Name": "leakage-detect-alert",
+        "ChipId": "0",
+        "GpioNum": 92,
+        "EventMon": "BOTH",
+        "Targets": {
+            "RISING": ["deassert-gpio-log@leakage-detect-alert.service"],
+            "FALLING": ["assert-gpio-log@leakage-detect-alert.service"]
+        },
+        "Continue": true
+    },
+    {
         "Name": "irq-uv-detect-alert",
         "ChipId": "2",
         "GpioNum": 174,
@@ -75,29 +142,6 @@
         "Continue": true
     },
     {
-        "Name": "reset-cause-platrst",
-        "ChipId": "0",
-        "GpioNum": 16,
-        "EventMon": "BOTH",
-        "Targets": {
-            "RISING": ["deassert-gpio-log@reset-cause-platrst.service"],
-            "FALLING": ["assert-gpio-log@reset-cause-platrst.service"]
-        },
-        "Continue": true
-    },
-    {
-        "Name": "power-host-good",
-        "ChipId": "2",
-        "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"]
-
-        },
-        "Continue": true
-    },
-    {
         "Name": "reset-cause-pcie",
         "ChipId": "2",
         "GpioNum": 182,
@@ -118,39 +162,5 @@
             "FALLING": ["assert-gpio-log@pvdd11-ocp-alert.service"]
         },
         "Continue": true
-    },
-    {
-        "Name": "post-end-n",
-        "ChipId": "2",
-        "GpioNum": 66,
-        "EventMon": "BOTH",
-        "Targets": {
-            "RISING": ["deassert-post-end.service"],
-            "FALLING": ["assert-post-end.service"]
-
-        },
-        "Continue": true
-    },
-    {
-        "Name": "leakage-detect-alert",
-        "ChipId": "0",
-        "GpioNum": 92,
-        "EventMon": "BOTH",
-        "Targets": {
-            "RISING": ["deassert-gpio-log@leakage-detect-alert.service"],
-            "FALLING": ["assert-gpio-log@leakage-detect-alert.service"]
-        },
-        "Continue": true
-    },
-    {
-        "Name": "power-hsc-good",
-        "ChipId": "0",
-        "GpioNum": 21,
-        "EventMon": "BOTH",
-        "Targets": {
-            "RISING": ["host-power-on.service"],
-            "FALLING": ["host-power-off.service"]
-        },
-        "Continue": true
     }
 ]
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
index 791fe26..6787b88 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
+++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
@@ -16,6 +16,8 @@
             file://deassert-power-good.service \
             file://deassert-reset-button \
             file://deassert-reset-button.service \
+            file://deassert-uart-switch-button \
+            file://deassert-uart-switch-button.service \
             file://host-power-off \
             file://host-power-off.service \
             file://host-power-on \
@@ -38,6 +40,7 @@
     deassert-power-good.service \
     deassert-post-end.service \
     deassert-reset-button.service \
+    deassert-uart-switch-button.service \
     multi-gpios-sys-init.service \
     "
 
@@ -69,6 +72,8 @@
     install -m 0755 ${WORKDIR}/assert-power-good ${D}${libexecdir}/${PN}/
     install -m 0755 ${WORKDIR}/deassert-power-good ${D}${libexecdir}/${PN}/
 
+    install -m 0755 ${WORKDIR}/deassert-uart-switch-button ${D}${libexecdir}/${PN}/
+
     install -m 0755 ${WORKDIR}/host-power-off ${D}${libexecdir}/${PN}/
     install -m 0755 ${WORKDIR}/host-power-on ${D}${libexecdir}/${PN}/
 }