meta-ampere: handle Overtemp Fault LED

Assert Fault LED when detecting OVERTEMP signal asserted.
This is done by adding new overtemp_fault LED group and
update the overtemp service to assert/de-assert the LED
group.

1. Start the ampere_overtemp@.service
2. Verify that the `Fault Led` is turned on and turn off after 10s.
3. Verify that Thermal Trip SEL is created.

Signed-off-by: Hieu Huynh <hieuh@os.amperecomputing.com>
Change-Id: Ifbc203bf79a13741082d84850b9e75ca6148a6cd
diff --git a/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp.sh b/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp.sh
new file mode 100644
index 0000000..803bab8
--- /dev/null
+++ b/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+# Assert/Deassert system fault led
+ampere_add_redfishevent.sh OpenBMC.0.1.CPUThermalTrip.Critical "$1"
+busctl set-property xyz.openbmc_project.LED.GroupManager /xyz/openbmc_project/led/groups/overtemp_fault xyz.openbmc_project.Led.Group Asserted b true
+obmcutil chassisoff
+sleep 10
+busctl set-property xyz.openbmc_project.LED.GroupManager /xyz/openbmc_project/led/groups/overtemp_fault xyz.openbmc_project.Led.Group Asserted b false
diff --git a/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service b/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service
index 06c2e9b..11de73f 100644
--- a/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service
+++ b/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service
@@ -3,5 +3,4 @@
 
 [Service]
 Restart=no
-ExecStart=/bin/sh -c "touch /tmp/fault_overtemp && obmcutil chassisoff"
-ExecStartPost=/bin/sh -c "ampere_add_redfishevent.sh OpenBMC.0.1.CPUThermalTrip.Critical %i && sleep 10 && rm /tmp/fault_overtemp"
+ExecStart=/usr/sbin/ampere_overtemp.sh %i
diff --git a/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
index f8cf1d4..fb411e0 100644
--- a/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
+++ b/meta-ampere/meta-common/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
@@ -1,5 +1,9 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
 
+SRC_URI += " \
+           file://ampere_overtemp.sh \
+           "
+
 SYSTEMD_SERVICE:${PN}-monitor += " \
                                   ampere-host-shutdown-ack@.service \
                                   ampere_overtemp@.service \
@@ -7,5 +11,13 @@
                                   ampere_hightemp_stop@.service \
                                  "
 
+FILES:${PN}-monitor += " \
+                        /usr/sbin/ampere_overtemp.sh \
+                       "
+
 SYSTEMD_LINK:${PN}-monitor:append = " ../phosphor-multi-gpio-monitor.service:multi-user.target.requires/phosphor-multi-gpio-monitor.service"
 
+do_install:append() {
+    install -d ${D}/usr/sbin
+    install -m 0755 ${WORKDIR}/ampere_overtemp.sh ${D}/${sbindir}/
+}
diff --git a/meta-ampere/meta-jade/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json b/meta-ampere/meta-jade/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json
index bec2a99..b92fa87 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json
+++ b/meta-ampere/meta-jade/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json
@@ -42,6 +42,17 @@
 					"Period": 1000
 				}
 			]
+		},
+		{
+			"group": "overtemp_fault",
+			"members": [
+				{
+					"Name": "fault",
+					"Action": "On",
+					"DutyOn": 50,
+					"Period": 1000
+				}
+			]
 		}
 	]
 }
diff --git a/meta-ampere/meta-mitchell/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json b/meta-ampere/meta-mitchell/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json
index ef35e05..107b70c 100644
--- a/meta-ampere/meta-mitchell/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json
+++ b/meta-ampere/meta-mitchell/recipes-phosphor/leds/phosphor-led-manager/led-group-config.json
@@ -60,6 +60,17 @@
 					"Period": 1000
 				}
 			]
+		},
+		{
+			"group": "overtemp_fault",
+			"members": [
+				{
+					"Name": "fault",
+					"Action": "On",
+					"DutyOn": 50,
+					"Period": 1000
+				}
+			]
 		}
 	]
 }