meta-ampere: mtjade: use phosphor-multi-gpio to handle GPIO events

Change to use phosphor-multi-gpio-monitor to handle all GPIO events from
Altra Host.

Tested:
1. Run reboot command from Host OS and check if Host can reboot and then
boot to OS.
2. Run shutdown command from Host OS and check if PowerState change to
Off after complete.
3. Check SCP failover handling.
4. Check PSU Hotswap workaround is applied when hot plugging/unplugging
PSUs

Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com>
Change-Id: I9797b51facf31672a6d2c9bc7ab7add24d8e06b8
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
index 2889517..16fde56 100644
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling.bb
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling.bb
@@ -9,38 +9,16 @@
 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 S0_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 \
+                            S0_hightemp_start S0_hightemp_stop \
+                            S1_hightemp_start S1_hightemp_stop \
                            "
 
 SYSTEMD_ENVIRONMENT_FILE:${PN} +=" \
-                                  obmc/gpio/reboot_ack \
-                                  obmc/gpio/shutdown_ack \
-                                  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"
@@ -49,21 +27,8 @@
 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 \
-                          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/ampere-gpio-handling/ampere_fault_led_start@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_start@.service
deleted file mode 100644
index 18ee1be..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_start@.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Ampere Computing LLC fault event condition service
-Wants=mapper-wait@-xyz-openbmc_project-led-groups.service
-After=mapper-wait@-xyz-openbmc_project-led-groups.service
-StartLimitIntervalSec=0
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/env toggle_fault_led.sh %i on
-SyslogIdentifier=fault-led
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service
deleted file mode 100644
index 83f442c..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Ampere Computing LLC fault event condition service
-Wants=mapper-wait@-xyz-openbmc_project-led-groups.service
-After=mapper-wait@-xyz-openbmc_project-led-groups.service
-StartLimitIntervalSec=0
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/env toggle_fault_led.sh %i off
-SyslogIdentifier=fault-led
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_overtemp@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_overtemp@.service
deleted file mode 100644
index 587cba1..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_overtemp@.service
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=Ampere Computing LLC Overtemp event
-
-[Service]
-Restart=no
-ExecStart=/usr/bin/env obmcutil chassisoff
-ExecStartPost=/usr/bin/env ampere_add_redfishevent.sh OpenBMC.0.1.CPUThermalTrip.Critical %i
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD
deleted file mode 100644
index cf13085..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD
+++ /dev/null
@@ -1,4 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=60
-POLARITY=0
-TARGET=psu_hotswap_reset@0.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD
deleted file mode 100644
index 7588c25..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD
+++ /dev/null
@@ -1,4 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=61
-POLARITY=0
-TARGET=psu_hotswap_reset@1.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start
deleted file mode 100644
index c13da44..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start
+++ /dev/null
@@ -1,5 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=73
-POLARITY=1
-TARGET=ampere_fault_led_start@0.service
-EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop
deleted file mode 100644
index 7233f88..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop
+++ /dev/null
@@ -1,5 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=73
-POLARITY=0
-TARGET=ampere_fault_led_stop@0.service
-EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_overtemp b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_overtemp
deleted file mode 100644
index e39e196..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_overtemp
+++ /dev/null
@@ -1,4 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=51
-POLARITY=1
-TARGET=ampere_overtemp@0.service
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
deleted file mode 100644
index e8e975f..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_scp_auth_failure
+++ /dev/null
@@ -1,4 +0,0 @@
-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/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start
deleted file mode 100644
index 6fa4785..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start
+++ /dev/null
@@ -1,5 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=201
-POLARITY=1
-TARGET=ampere_fault_led_start@1.service
-EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop
deleted file mode 100644
index 36b29ec..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop
+++ /dev/null
@@ -1,5 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=201
-POLARITY=0
-TARGET=ampere_fault_led_stop@1.service
-EXTRA_ARGS=--continue
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_overtemp b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_overtemp
deleted file mode 100644
index c7bb8c1..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_overtemp
+++ /dev/null
@@ -1,4 +0,0 @@
-DEVPATH=/dev/input/by-path/platform-gpio-keys-event
-KEY=206
-POLARITY=1
-TARGET=ampere_overtemp@1.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/reboot_ack b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/reboot_ack
deleted file mode 100644
index a8ad98e..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/reboot_ack
+++ /dev/null
@@ -1,4 +0,0 @@
-DEVPATH=/dev/input/event0
-KEY=75
-POLARITY=1
-TARGET=obmc-host-force-warm-reboot@0.target
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/shutdown_ack b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/shutdown_ack
deleted file mode 100644
index 18cc872..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/shutdown_ack
+++ /dev/null
@@ -1,4 +0,0 @@
-DEVPATH=/dev/input/event0
-KEY=50
-POLARITY=1
-TARGET=ampere-host-shutdown-ack@0.service
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
deleted file mode 100644
index 58aa47f..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_fault_led.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/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/ampere-gpio-handling/toggle_identify_led.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_identify_led.sh
deleted file mode 100755
index f6eae0e..0000000
--- a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_identify_led.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-#
-# Toggle the state of identify LED Group
-
-SERVICE="xyz.openbmc_project.LED.GroupManager"
-INTERFACE="xyz.openbmc_project.Led.Group"
-PROPERTY="Asserted"
-
-# Get enclosure_identify state
-identify_object=$(busctl tree $SERVICE --list | grep -m 1 identify)
-identify_state=$(busctl get-property $SERVICE "$identify_object" $INTERFACE $PROPERTY \
-			|  awk '{print $NF;}')
-
-# Get enclosure_identify_blink state
-identify_blink_object=$(busctl tree $SERVICE --list | grep identify_blink)
-identify_blink_state=$(busctl get-property $SERVICE "$identify_blink_object" $INTERFACE $PROPERTY \
-			|  awk '{print $NF;}')
-
-# Set state
-if [ "$identify_state" = "false" ] && [ "$identify_blink_state" = "false" ]; then
-    # Turn on the UID LED
-    busctl set-property $SERVICE "$identify_object" $INTERFACE $PROPERTY b true
-elif [ "$identify_state" = "false" ] && [ "$identify_blink_state" = "true" ]; then
-    # Turn off the UID LED when LED is blinking state
-    busctl set-property $SERVICE "$identify_blink_object" $INTERFACE $PROPERTY b false
-elif [ "$identify_state" = "true" ] && [ "$identify_blink_state" = "false" ]; then
-    # Turn off the UID LED
-    busctl set-property $SERVICE "$identify_object" $INTERFACE $PROPERTY b false
-else
-    echo "Invalid case! When identify_blink_state is true, the identify_state will set to false"
-fi
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere-host-shutdown-ack@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere-host-shutdown-ack@.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere-host-shutdown-ack@.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere-host-shutdown-ack@.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service
new file mode 100644
index 0000000..a3efc9f
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Ampere Computing LLC Overtemp event
+
+[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"
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_psu_reset_hotswap.sh b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_psu_reset_hotswap.sh
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_psu_reset_hotswap.sh
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_psu_reset_hotswap.sh
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/phosphor-gpio-monitor/ampere_scp_failover.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_scp_failover.service
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/phosphor-gpio-monitor/ampere_scp_failover.sh
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.sh
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_scp_failover.sh
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json
new file mode 100644
index 0000000..7b89a14
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json
@@ -0,0 +1,53 @@
+[
+    {
+        "Name": "REBOOT_ACK",
+	"ChipId": "0",
+	"GpioNum": 75,
+        "EventMon": "FALLING",
+        "Target": "obmc-host-force-warm-reboot@0.target",
+        "Continue": true
+    },
+    {
+        "Name": "SHUTDOWN_ACK",
+	"ChipId": "0",
+	"GpioNum": 50,
+        "EventMon": "FALLING",
+        "Target": "ampere-host-shutdown-ack@0.service",
+        "Continue": true
+    },
+    {
+        "Name": "S0_OVERTEMP",
+        "LineName": "S0_OVERTEMP_L",
+        "EventMon": "FALLING",
+        "Target": "ampere_overtemp@0.service",
+        "Continue": true
+    },
+    {
+        "Name": "S1_OVERTEMP",
+        "LineName": "S1_OVERTEMP_L",
+        "EventMon": "FALLING",
+        "Target": "ampere_overtemp@1.service",
+        "Continue": true
+    },
+    {
+        "Name": "S0_SCP_AUTH_FAIL",
+        "LineName": "S0_SCP_AUTH_FAIL_L",
+        "EventMon": "FALLING",
+        "Target": "ampere_scp_failover.service",
+        "Continue": true
+    },
+    {
+        "Name": "PSU1_VIN_GOOD",
+        "LineName": "PSU1_VIN_GOOD",
+        "EventMon": "RISING",
+        "Target": "psu_hotswap_reset@0.service",
+        "Continue": true
+    },
+    {
+        "Name": "PSU2_VIN_GOOD",
+        "LineName": "PSU2_VIN_GOOD",
+        "EventMon": "RISING",
+        "Target": "psu_hotswap_reset@1.service",
+        "Continue": true
+    }
+]
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/psu_hotswap_reset@.service b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/psu_hotswap_reset@.service
similarity index 100%
rename from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/psu_hotswap_reset@.service
rename to meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/psu_hotswap_reset@.service
diff --git a/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
new file mode 100644
index 0000000..f798fee
--- /dev/null
+++ b/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
@@ -0,0 +1,35 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+RDEPENDS:${PN}-monitor += "bash"
+RDEPENDS:${PN} += "bash"
+
+SRC_URI += " \
+            file://phosphor-multi-gpio-monitor.json \
+            file://ampere_scp_failover.sh \
+            file://ampere_psu_reset_hotswap.sh \
+           "
+
+SYSTEMD_SERVICE:${PN}-monitor += " \
+                                  ampere-host-shutdown-ack@.service \
+                                  ampere_overtemp@.service \
+                                  ampere_scp_failover.service \
+                                  psu_hotswap_reset@.service \
+                                 "
+
+FILES:${PN}-monitor += " \
+                        /usr/share/${PN}/phosphor-multi-gpio-monitor.json \
+                        /usr/sbin/ampere_scp_failover.sh \
+                        /usr/sbin/ampere_psu_reset_hotswap.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}${sbindir}
+    install -m 0644 ${WORKDIR}/phosphor-multi-gpio-monitor.json ${D}${datadir}/${PN}/
+    install -m 0755 ${WORKDIR}/ampere_scp_failover.sh ${D}${sbindir}/
+    install -m 0755 ${WORKDIR}/ampere_psu_reset_hotswap.sh ${D}${sbindir}/
+}