meta-ampere: mtjade: unify gpio handling service

Instead of having many bitbake recipes for Altra GPIO handling,
combining them into a single recipe so that the code look cleaner.

Tested:
1. Check ID button still works.
2. Check hightemp and overtemp handing still works.
3. Check Fault LED works correctly.
4. Check graceful shutdown and Host reboot still work.

Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com>
Change-Id: Ic6eef75702cf0353ae2d84a3cda0ffb84d10f4cc
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling.bb b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling.bb
new file mode 100644
index 0000000..bf019ed
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling.bb
@@ -0,0 +1,71 @@
+SUMMARY = "Ampere Computing LLC Host Gpio Handling"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit obmc-phosphor-systemd
+
+DEPENDS += "virtual/obmc-gpio-monitor"
+RDEPENDS:${PN} += "virtual/obmc-gpio-monitor"
+RDEPENDS:${PN} += "bash"
+
+SRC_URI += " \
+            file://toggle_fault_led.sh \
+            file://ampere_psu_reset_hotswap.sh \
+            file://toggle_identify_led.sh \
+            file://ampere_scp_failover.sh \
+           "
+
+AMPERE_MONITOR_INSTANCES = " \
+                            reboot_ack shutdown_ack id_button iS0_scp_auth_failure \
+                            S0_overtemp S0_hightemp_start S0_hightemp_stop \
+                            S1_overtemp S1_hightemp_start S1_hightemp_stop \
+                            S0_fault_alert_start S0_fault_alert_stop \
+                            S1_fault_alert_start S1_fault_alert_stop \
+                            PSU1_VIN_GOOD PSU2_VIN_GOOD \
+                           "
+
+SYSTEMD_ENVIRONMENT_FILE:${PN} +=" \
+                                  obmc/gpio/reboot_ack \
+                                  obmc/gpio/shutdown_ack \
+                                  obmc/gpio/id_button \
+                                  obmc/gpio/S0_scp_auth_failure \
+                                  obmc/gpio/S0_overtemp \
+                                  obmc/gpio/S0_hightemp_start \
+                                  obmc/gpio/S0_hightemp_stop \
+                                  obmc/gpio/S1_overtemp \
+                                  obmc/gpio/S1_hightemp_start \
+                                  obmc/gpio/S1_hightemp_stop \
+                                  obmc/gpio/S0_fault_alert_start \
+                                  obmc/gpio/S0_fault_alert_stop \
+                                  obmc/gpio/S1_fault_alert_start \
+                                  obmc/gpio/S1_fault_alert_stop \
+                                  obmc/gpio/PSU1_VIN_GOOD \
+                                  obmc/gpio/PSU2_VIN_GOOD \
+                                 "
+
+TMPL = "phosphor-gpio-monitor@.service"
+INSTFMT = "phosphor-gpio-monitor@{0}.service"
+TGT = "multi-user.target"
+FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}"
+
+SYSTEMD_SERVICE:${PN} += " \
+                          ampere-host-shutdown-ack@.service \
+                          ampere_overtemp@.service \
+                          ampere_hightemp_start@.service \
+                          ampere_hightemp_stop@.service \
+                          ampere_fault_led_start@.service \
+                          ampere_fault_led_stop@.service \
+                          psu_hotswap_reset@.service \
+                          id-button-pressed.service \
+                          ampere_scp_failover.service \
+                         "
+SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'AMPERE_MONITOR_INSTANCES')}"
+
+do_install() {
+    install -d ${D}${sbindir}
+    install -m 0755 ${WORKDIR}/toggle_fault_led.sh ${D}${sbindir}/
+    install -m 0755 ${WORKDIR}/toggle_identify_led.sh ${D}${sbindir}/
+    install -m 0755 ${WORKDIR}/ampere_psu_reset_hotswap.sh ${D}${sbindir}/
+    install -m 0755 ${WORKDIR}/ampere_scp_failover.sh ${D}${sbindir}/
+}
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling/ampere-host-shutdown-ack@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere-host-shutdown-ack@.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling/ampere-host-shutdown-ack@.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere-host-shutdown-ack@.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/ampere_fault_led.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_start@.service
similarity index 83%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/ampere_fault_led.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_start@.service
index 05c63d0..18ee1be 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/ampere_fault_led.service
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_start@.service
@@ -6,5 +6,5 @@
 
 [Service]
 Type=oneshot
-ExecStart=/usr/bin/env toggle_fault_led.sh
+ExecStart=/usr/bin/env toggle_fault_led.sh %i on
 SyslogIdentifier=fault-led
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/ampere_fault_led.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service
similarity index 83%
copy from meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/ampere_fault_led.service
copy to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service
index 05c63d0..83f442c 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/ampere_fault_led.service
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service
@@ -6,5 +6,5 @@
 
 [Service]
 Type=oneshot
-ExecStart=/usr/bin/env toggle_fault_led.sh
+ExecStart=/usr/bin/env toggle_fault_led.sh %i off
 SyslogIdentifier=fault-led
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/ampere_hightemp_start@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_hightemp_start@.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/ampere_hightemp_start@.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_hightemp_start@.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/ampere_hightemp_stop@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_hightemp_stop@.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/ampere_hightemp_stop@.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_hightemp_stop@.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/ampere_overtemp@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_overtemp@.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/ampere_overtemp@.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_overtemp@.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/ampere_psu_reset_hotswap.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_psu_reset_hotswap.sh
similarity index 93%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/ampere_psu_reset_hotswap.sh
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_psu_reset_hotswap.sh
index 37a3ce3..3ff3e1f 100755
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/ampere_psu_reset_hotswap.sh
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_psu_reset_hotswap.sh
@@ -29,15 +29,15 @@
 # $1 will be the name of the psu
 PSU=$1
 
-if [ "$PSU" = 1 ]; then
+if [ "$PSU" = 0 ]; then
 	HSC_PMBUS_NUM=$HSC1_PMBUS_NUM
 	HSC_SLAVE_ADDR=$HSC1_SLAVE_ADDR
-elif [ "$PSU" = 2 ]; then
+elif [ "$PSU" = 1 ]; then
 	HSC_PMBUS_NUM=$HSC2_PMBUS_NUM
 	HSC_SLAVE_ADDR=$HSC2_SLAVE_ADDR
 else
-	echo "Please choose PSU1 (1) or PSU2 (2)"
-	echo "Ex: ampere_psu_reset_hotswap.sh 1"
+	echo "Please choose PSU1 (0) or PSU2 (1)"
+	echo "Ex: ampere_psu_reset_hotswap.sh 0"
 	exit 0
 fi
 
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.service
new file mode 100644
index 0000000..ff4dec5
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Ampere Computing LLC Ampere failover event service
+
+[Service]
+Restart=no
+ExecStart=/usr/bin/env ampere_scp_failover.sh
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.sh
new file mode 100644
index 0000000..56319a3
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# Handle the SCP Failover feature in which:
+# - If the BMC receives the SCP_AUTH_FAILURE signal from Socket0,
+#   attempts to boot from the failover boot EEPROM.
+# - If the second boot fails, treats this as a permanent boot failure
+#   and logs an event in SEL.
+
+# shellcheck disable=SC1091
+source /usr/sbin/gpio-lib.sh
+source /usr/sbin/gpio-defs.sh
+
+# Check the I2C_BACKUP_SEL
+I2C_BACKUP_SEL=$(gpio_get_val "$BMC_I2C_BACKUP_SEL")
+if [ "${I2C_BACKUP_SEL}" == "1" ]; then
+	# If it is HIGH, set it LOW. Then reset the Host to boot from
+	# the failover Boot EEPROM.
+	echo "scp-failover: switch HOST to failover boot EEPROM"
+	gpioset "$(gpiofind BMC_SELECT_EEPROM)"=0
+
+	# Reset the Host to boot on the failover EEPROM
+	ampere_power_util.sh mb force_reset
+else
+	# Turn OFF Host as SCP firmware on both Boot EEPROM fail
+	obmcutil chassisoff
+
+	echo "scp-failover: switch HOST back to the main Boot EEPROM"
+	gpioset "$(gpiofind BMC_SELECT_EEPROM)"=1
+
+	# Log event
+	ampere_add_redfishevent.sh OpenBMC.0.1.GeneralFirmwareSecurityViolation.Critical "SCP Authentication failure"
+fi
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/id-button-pressed.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/id-button-pressed.service
similarity index 83%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/id-button-pressed.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/id-button-pressed.service
index 0a97ed7..f633fc3 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/id-button-pressed.service
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/id-button-pressed.service
@@ -6,5 +6,5 @@
 
 [Service]
 Type=oneshot
-ExecStart=/usr/bin/toggle_identify_led.sh
+ExecStart=/usr/bin/env toggle_identify_led.sh
 SyslogIdentifier=id-button
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/obmc/gpio/PSU1_B25 b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD
similarity index 66%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/obmc/gpio/PSU1_B25
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD
index b0ce1a8..cf13085 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/obmc/gpio/PSU1_B25
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD
@@ -1,4 +1,4 @@
 DEVPATH=/dev/input/by-path/platform-gpio-keys-event
 KEY=60
 POLARITY=0
-TARGET=psu1_hotswap_reset.service
+TARGET=psu_hotswap_reset@0.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/obmc/gpio/PSU2_B25 b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD
similarity index 66%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/obmc/gpio/PSU2_B25
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD
index ac50f53..7588c25 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/obmc/gpio/PSU2_B25
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD
@@ -1,4 +1,4 @@
 DEVPATH=/dev/input/by-path/platform-gpio-keys-event
 KEY=61
 POLARITY=0
-TARGET=psu2_hotswap_reset.service
+TARGET=psu_hotswap_reset@1.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s0_fault_alert b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start
similarity index 69%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s0_fault_alert
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start
index dd048ef..c13da44 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s0_fault_alert
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start
@@ -1,5 +1,5 @@
 DEVPATH=/dev/input/by-path/platform-gpio-keys-event
 KEY=73
 POLARITY=1
-TARGET=ampere_fault_led.service
+TARGET=ampere_fault_led_start@0.service
 EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s0_fault_alert b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop
similarity index 61%
copy from meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s0_fault_alert
copy to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop
index dd048ef..7233f88 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s0_fault_alert
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop
@@ -1,5 +1,5 @@
 DEVPATH=/dev/input/by-path/platform-gpio-keys-event
 KEY=73
-POLARITY=1
-TARGET=ampere_fault_led.service
+POLARITY=0
+TARGET=ampere_fault_led_stop@0.service
 EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S0_hightemp_start b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_hightemp_start
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S0_hightemp_start
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_hightemp_start
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S0_hightemp_stop b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_hightemp_stop
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S0_hightemp_stop
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_hightemp_stop
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S0_overtemp b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_overtemp
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S0_overtemp
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_overtemp
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_scp_auth_failure b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_scp_auth_failure
new file mode 100644
index 0000000..e8e975f
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_scp_auth_failure
@@ -0,0 +1,4 @@
+DEVPATH=/dev/input/by-path/platform-gpio-keys-event
+KEY=74
+POLARITY=1
+TARGET=ampere_scp_failover.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s1_fault_alert b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start
similarity index 69%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s1_fault_alert
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start
index 1963ce0..6fa4785 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s1_fault_alert
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start
@@ -1,5 +1,5 @@
 DEVPATH=/dev/input/by-path/platform-gpio-keys-event
 KEY=201
 POLARITY=1
-TARGET=ampere_fault_led.service
+TARGET=ampere_fault_led_start@1.service
 EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s1_fault_alert b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop
similarity index 61%
copy from meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s1_fault_alert
copy to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop
index 1963ce0..36b29ec 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/obmc/gpio/s1_fault_alert
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop
@@ -1,5 +1,5 @@
 DEVPATH=/dev/input/by-path/platform-gpio-keys-event
 KEY=201
-POLARITY=1
-TARGET=ampere_fault_led.service
+POLARITY=0
+TARGET=ampere_fault_led_stop@1.service
 EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S1_hightemp_start b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_hightemp_start
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S1_hightemp_start
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_hightemp_start
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S1_hightemp_stop b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_hightemp_stop
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S1_hightemp_stop
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_hightemp_stop
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S1_overtemp b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_overtemp
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor/obmc/gpio/S1_overtemp
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_overtemp
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/obmc/gpio/id_button b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/id_button
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/obmc/gpio/id_button
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/id_button
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling/obmc/gpio/reboot_ack b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/reboot_ack
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling/obmc/gpio/reboot_ack
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/reboot_ack
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling/obmc/gpio/shutdown_ack b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/shutdown_ack
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling/obmc/gpio/shutdown_ack
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/shutdown_ack
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/psu1_hotswap_reset.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/psu_hotswap_reset@.service
similarity index 61%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/psu1_hotswap_reset.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/psu_hotswap_reset@.service
index 9694d2a..357cc05 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/psu1_hotswap_reset.service
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/psu_hotswap_reset@.service
@@ -3,4 +3,4 @@
 
 [Service]
 Restart=no
-ExecStart=/usr/sbin/ampere_psu_reset_hotswap.sh 1
+ExecStart=/usr/sbin/ampere_psu_reset_hotswap.sh %i
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_fault_led.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_fault_led.sh
new file mode 100644
index 0000000..58aa47f
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_fault_led.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# Toggle the state of identify LED Group
+
+socket=$1
+isOn=$2
+
+# Create /tmp/fault* file
+if [ "$isOn" == "on" ]; then
+	touch /tmp/fault"$socket"
+else
+	rm /tmp/fault"$socket"
+fi
+
+# Set Fault Led state
+if [[ -f /tmp/fault0 ]] || [[ -f /tmp/fault1 ]]; then
+	target='true'
+else
+	target='false'
+fi
+
+SERVICE="xyz.openbmc_project.LED.GroupManager"
+INTERFACE="xyz.openbmc_project.Led.Group"
+PROPERTY="Asserted"
+
+# Get current state
+object=$(busctl tree $SERVICE --list | grep system_fault)
+
+# Set target state
+busctl set-property $SERVICE "$object" $INTERFACE $PROPERTY b $target
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/toggle_identify_led.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_identify_led.sh
similarity index 69%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/toggle_identify_led.sh
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_identify_led.sh
index 06b2d55..f6eae0e 100755
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button/toggle_identify_led.sh
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_identify_led.sh
@@ -1,19 +1,5 @@
 #!/bin/sh
 #
-# Copyright (c) 2021 Ampere Computing LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#	http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
 # Toggle the state of identify LED Group
 
 SERVICE="xyz.openbmc_project.LED.GroupManager"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor.bb b/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor.bb
deleted file mode 100644
index 4994183..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "MTJade fault-led application"
-PR = "r1"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit obmc-phosphor-systemd
-
-DEPENDS += "virtual/obmc-gpio-monitor"
-RDEPENDS:${PN} += "virtual/obmc-gpio-monitor"
-
-S = "${WORKDIR}"
-SRC_URI += "file://toggle_fault_led.sh"
-
-do_install() {
-        install -d ${D}${bindir}
-        install -m 0755 ${WORKDIR}/toggle_fault_led.sh \
-        ${D}${bindir}/toggle_fault_led.sh
-}
-
-OBMC_FAULT_MONITOR_INSTANCES = "s0_fault_alert s1_fault_alert"
-
-SYSTEMD_ENVIRONMENT_FILE:${PN} += "obmc/gpio/s0_fault_alert \
-                                   obmc/gpio/s1_fault_alert \
-                                  "
-
-TMPL = "phosphor-gpio-monitor@.service"
-INSTFMT = "phosphor-gpio-monitor@{0}.service"
-TGT = "multi-user.target"
-FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}"
-
-SYSTEMD_SERVICE:${PN} += "ampere_fault_led.service"
-SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'OBMC_FAULT_MONITOR_INSTANCES')}"
-
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/toggle_fault_led.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/toggle_fault_led.sh
deleted file mode 100644
index 1e1cbc5..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/fault-monitor/toggle_fault_led.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2021 Ampere Computing LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#	http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Toggle the state of identify LED Group
-
-SERVICE="xyz.openbmc_project.LED.GroupManager"
-INTERFACE="xyz.openbmc_project.Led.Group"
-PROPERTY="Asserted"
-
-# Get current state
-object=$(busctl tree $SERVICE --list | grep system_fault)
-state=$(busctl get-property $SERVICE "$object" $INTERFACE $PROPERTY \
-	  |  awk '{print $NF;}')
-
-if [ "$state" = "false" ]; then
-	target='true'
-else
-	target='false'
-fi
-
-# Set target state
-busctl set-property $SERVICE "$object" $INTERFACE $PROPERTY b $target
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling.bb b/meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling.bb
deleted file mode 100644
index 79bfb72..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/host-gpio-handling.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Ampere Computing LLC Host Gpio Handling"
-PR = "r1"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit obmc-phosphor-systemd
-
-DEPENDS += "virtual/obmc-gpio-monitor"
-RDEPENDS:${PN} += "virtual/obmc-gpio-monitor"
-
-OBMC_HOST_ACK_MONITOR_INSTANCES = "reboot_ack shutdown_ack"
-
-SYSTEMD_ENVIRONMENT_FILE:${PN} +="obmc/gpio/reboot_ack \
-                                  obmc/gpio/shutdown_ack \
-                                 "
-
-TMPL = "phosphor-gpio-monitor@.service"
-INSTFMT = "phosphor-gpio-monitor@{0}.service"
-TGT = "multi-user.target"
-FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}"
-
-SYSTEMD_SERVICE:${PN} += "ampere-host-shutdown-ack@.service"
-SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'OBMC_HOST_ACK_MONITOR_INSTANCES')}"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button.bb b/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button.bb
deleted file mode 100644
index c1a616a..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/id-button.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "MTJade ID Button pressed application"
-PR = "r1"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit obmc-phosphor-systemd
-
-DEPENDS += "virtual/obmc-gpio-monitor"
-RDEPENDS:${PN} += "virtual/obmc-gpio-monitor"
-
-SRC_URI += "file://toggle_identify_led.sh"
-
-do_install() {
-        install -d ${D}${bindir}
-        install -m 0755 ${WORKDIR}/toggle_identify_led.sh \
-            ${D}${bindir}/toggle_identify_led.sh
-}
-
-SYSTEMD_ENVIRONMENT_FILE:${PN} +="obmc/gpio/id_button"
-
-ID_BUTTON_SERVICE = "id_button"
-
-TMPL = "phosphor-gpio-monitor@.service"
-INSTFMT = "phosphor-gpio-monitor@{0}.service"
-TGT = "multi-user.target"
-FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}"
-
-SYSTEMD_SERVICE:${PN} += "id-button-pressed.service"
-SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'ID_BUTTON_SERVICE')}"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset.bb b/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset.bb
deleted file mode 100644
index 839c6d4..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Ampere Computing LLC PSU Hot Swap Reseting application"
-PR = "r1"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit obmc-phosphor-systemd
-inherit allarch
-
-DEPENDS += "virtual/obmc-gpio-monitor"
-RDEPENDS:${PN} += "virtual/obmc-gpio-monitor"
-
-OBMC_PSU_MONITOR_INSTANCES = "PSU1_B25 PSU2_B25"
-
-# Copies config file having arguments for psu
-# via GPIO assertion
-SYSTEMD_ENVIRONMENT_FILE:${PN} +="obmc/gpio/PSU1_B25 \
-                                  obmc/gpio/PSU2_B25 \
-                                 "
-SYSTEMD_SERVICE:${PN} ?= "psu1_hotswap_reset.service psu2_hotswap_reset.service"
-
-SRC_URI += "file://ampere_psu_reset_hotswap.sh"
-
-do_install() {
-        install -d ${D}${sbindir}
-        install -m 0755 ${WORKDIR}/ampere_psu_reset_hotswap.sh ${D}${sbindir}/
-}
-
-GPIO_MONITOR_TMPL = "phosphor-gpio-monitor@.service"
-GPIO_MONITOR_TGTFMT = "phosphor-gpio-monitor@{0}.service"
-TGT = "multi-user.target"
-PSU_MONITOR_FMT = "../${GPIO_MONITOR_TMPL}:${TGT}.requires/${GPIO_MONITOR_TGTFMT}"
-SYSTEMD_LINK:${PN} += "${@compose_list(d, 'PSU_MONITOR_FMT', 'OBMC_PSU_MONITOR_INSTANCES', 'OBMC_HOST_INSTANCES')}"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/psu2_hotswap_reset.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/psu2_hotswap_reset.service
deleted file mode 100644
index c94b42a..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/psu-hotswap-reset/psu2_hotswap_reset.service
+++ /dev/null
@@ -1,6 +0,0 @@
-[Unit]
-Description=Ampere Computing LLC PSU2 reset hotswap
-
-[Service]
-Restart=no
-ExecStart=/usr/sbin/ampere_psu_reset_hotswap.sh 2
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor.bb b/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor.bb
deleted file mode 100644
index c57ab13..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/tempevent-monitor.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Ampere Computing LLC Host temperature event monitor application"
-PR = "r1"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit obmc-phosphor-systemd
-inherit allarch
-
-DEPENDS += "virtual/obmc-gpio-monitor"
-RDEPENDS:${PN} += "virtual/obmc-gpio-monitor"
-
-OBMC_HOST_MONITOR_INSTANCES = "S0_overtemp S1_overtemp S0_hightemp_start S0_hightemp_stop S1_hightemp_start S1_hightemp_stop"
-
-# Copies config file having arguments for monitoring host overtemp
-# via GPIO assertion
-SYSTEMD_ENVIRONMENT_FILE:${PN} += " \
-                                   obmc/gpio/S0_overtemp \
-                                   obmc/gpio/S0_hightemp_start \
-                                   obmc/gpio/S0_hightemp_stop \
-                                   obmc/gpio/S1_overtemp \
-                                   obmc/gpio/S1_hightemp_start \
-                                   obmc/gpio/S1_hightemp_stop \
-                                  "
-
-
-SYSTEMD_SERVICE:${PN} = "ampere_overtemp@.service ampere_hightemp_start@.service ampere_hightemp_stop@.service"
-
-GPIO_MONITOR_TMPL = "phosphor-gpio-monitor@.service"
-GPIO_MONITOR_TGTFMT = "phosphor-gpio-monitor@{0}.service"
-TGT = "multi-user.target"
-TEMPEVENT_MONITOR_FMT = "../${GPIO_MONITOR_TMPL}:${TGT}.requires/${GPIO_MONITOR_TGTFMT}"
-SYSTEMD_LINK:${PN} += "${@compose_list(d, 'TEMPEVENT_MONITOR_FMT', 'OBMC_HOST_MONITOR_INSTANCES', 'OBMC_HOST_INSTANCES')}"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
index 23015af..3656006 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
+++ b/meta-ampere/meta-jade/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
@@ -3,14 +3,10 @@
                                        phosphor-image-signing \
                                        phosphor-virtual-sensor \
                                        phosphor-misc-usb-ctrl \
-                                       fault-monitor \
-                                       id-button \
-                                       psu-hotswap-reset \
-                                       tempevent-monitor \
+                                       ampere-gpio-handling \
                                       "
 
 RDEPENDS:${PN}-inventory:append:mtjade = " \
-                                          host-gpio-handling \
                                           dbus-sensors \
                                           entity-manager \
                                          "