summaryrefslogtreecommitdiff
path: root/meta-ampere
diff options
context:
space:
mode:
authorThang Q. Nguyen <thang@os.amperecomputing.com>2022-09-16 10:26:53 +0300
committerThang Q. Nguyen <thang@os.amperecomputing.com>2022-10-06 09:18:07 +0300
commit45a89b65e97053842bcb6a468ec1b3e454edb8c9 (patch)
tree4e87b73322a6f6db29a0f0bebc791e51aa601386 /meta-ampere
parentb45a1ed2ab456e12c73e8cb386bba51585a18462 (diff)
downloadopenbmc-45a89b65e97053842bcb6a468ec1b3e454edb8c9.tar.xz
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
Diffstat (limited to 'meta-ampere')
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling.bb39
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_start@.service10
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_fault_led_stop@.service10
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_overtemp@.service7
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU1_VIN_GOOD4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/PSU2_VIN_GOOD4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_start5
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_fault_alert_stop5
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_overtemp4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S0_scp_auth_failure4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_start5
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_fault_alert_stop5
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/S1_overtemp4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/reboot_ack4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/obmc/gpio/shutdown_ack4
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_fault_led.sh30
-rwxr-xr-xmeta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/toggle_identify_led.sh31
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere-host-shutdown-ack@.service (renamed from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere-host-shutdown-ack@.service)0
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_overtemp@.service7
-rwxr-xr-xmeta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_psu_reset_hotswap.sh (renamed from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_psu_reset_hotswap.sh)0
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_scp_failover.service (renamed from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.service)0
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ampere_scp_failover.sh (renamed from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/ampere_scp_failover.sh)0
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json53
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/psu_hotswap_reset@.service (renamed from meta-ampere/meta-jade/recipes-phosphor/gpio/ampere-gpio-handling/psu_hotswap_reset@.service)0
-rw-r--r--meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend35
25 files changed, 97 insertions, 173 deletions
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 2889517c43..16fde56247 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 @@ 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 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 @@ 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 \
- 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 18ee1bee52..0000000000
--- 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 83f442cef4..0000000000
--- 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 587cba195d..0000000000
--- 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 cf13085b1d..0000000000
--- 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 7588c2595c..0000000000
--- 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 c13da449c7..0000000000
--- 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 7233f881a8..0000000000
--- 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 e39e196805..0000000000
--- 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 e8e975f9f0..0000000000
--- 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 6fa47857bf..0000000000
--- 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 36b29ec462..0000000000
--- 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 c7bb8c1bc4..0000000000
--- 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 a8ad98ee75..0000000000
--- 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 18cc87246f..0000000000
--- 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 58aa47f8e8..0000000000
--- 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 f6eae0e245..0000000000
--- 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
index 6588191aae..6588191aae 100644
--- 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
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 0000000000..a3efc9ff99
--- /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
index 3ff3e1fc6a..3ff3e1fc6a 100755
--- 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
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
index ff4dec57a3..ff4dec57a3 100644
--- 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
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
index c1c16aba5c..c1c16aba5c 100644
--- 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
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 0000000000..7b89a145be
--- /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
index 357cc05383..357cc05383 100644
--- 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
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 0000000000..f798fee835
--- /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}/
+}