meta-facebook: yosemite5: add E1S hotplug DC cycle feature
According to OCP YV5 spec, add E1S hotplug DC cycle feature.
Instead of using the phosphor-gpio-monitor, use the dbus-monitor.
```
root@bmc:~# systemctl status hotplug-dc-cycle.service
○ hotplug-dc-cycle.service - Hotplug DC Cycle trigger
Loaded: loaded (/usr/lib/systemd/system/hotplug-dc-cycle.service; static)
Active: inactive (dead)
Sep 01 18:18:59 bmc systemd[1]: Starting Hotplug DC Cycle trigger...
Sep 01 18:19:00 bmc systemd[1]: hotplug-dc-cycle.service: Deactivated successfully.
Sep 01 18:19:00 bmc systemd[1]: Finished Hotplug DC Cycle trigger.
Sep 01 18:21:32 bmc systemd[1]: Starting Hotplug DC Cycle trigger...
Sep 01 18:21:32 bmc systemd[1]: hotplug-dc-cycle.service: Deactivated successfully.
Sep 01 18:21:32 bmc systemd[1]: Finished Hotplug DC Cycle trigger.
Sep 01 18:22:35 bmc systemd[1]: Starting Hotplug DC Cycle trigger...
Sep 01 18:22:36 bmc systemd[1]: hotplug-dc-cycle.service: Deactivated successfully.
Sep 01 18:22:36 bmc systemd[1]: Finished Hotplug DC Cycle trigger.
```
Change-Id: I360a00a576564436fb73861a88f4f50dbbaffef8
Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy.bb b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy.bb
new file mode 100644
index 0000000..e3e8ab7
--- /dev/null
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy.bb
@@ -0,0 +1,35 @@
+SUMMARY = "hotplug configuration for Yosemite5 platforms"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit allarch
+inherit phosphor-dbus-monitor
+
+S = "${UNPACKDIR}"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI:append = " \
+ file://hotplug.yaml \
+ file://hotplug-dc-cycle \
+ file://hotplug-dc-cycle.service \
+"
+
+RDEPENDS:${PN} += "bash"
+
+do_install() {
+ install -d ${D}${config_dir}
+ install -m 0644 ${UNPACKDIR}/*.yaml ${D}${config_dir}/
+
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${UNPACKDIR}/*.service ${D}${systemd_system_unitdir}/
+
+ install -d ${D}${libexecdir}/${PN}
+ install -m 0755 ${UNPACKDIR}/hotplug-dc-cycle ${D}${libexecdir}/${PN}/
+}
+
+FILES:${PN}:append = " \
+ ${config_dir}/*.yaml \
+ ${systemd_system_unitdir}/*.service \
+"
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug-dc-cycle b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug-dc-cycle
new file mode 100644
index 0000000..1d581fc
--- /dev/null
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug-dc-cycle
@@ -0,0 +1,6 @@
+#!/bin/bash
+busctl set-property xyz.openbmc_project.State.Host0 \
+ /xyz/openbmc_project/state/host0 \
+ xyz.openbmc_project.State.Host \
+ RequestedHostTransition s \
+ xyz.openbmc_project.State.Host.Transition.ForceWarmReboot
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug-dc-cycle.service b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug-dc-cycle.service
new file mode 100644
index 0000000..c6cff21
--- /dev/null
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug-dc-cycle.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Hotplug DC Cycle trigger
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/hotplug-policy/hotplug-dc-cycle
+SyslogIdentifier=hotplug-dc-cycle
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug.yaml b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug.yaml
new file mode 100644
index 0000000..7080ec1
--- /dev/null
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/hotplug-policy/hotplug.yaml
@@ -0,0 +1,35 @@
+- name: object manager path group
+ class: group
+ group: path
+ members:
+ - meta: PATH
+ path: /xyz/openbmc_project/GPIODeviceDetected/MB_E1S0
+ - meta: PATH
+ path: /xyz/openbmc_project/GPIODeviceDetected/MB_E1S1
+ - meta: PATH
+ path: /xyz/openbmc_project/GPIODeviceDetected/E1S_EB_E1S2
+ - meta: PATH
+ path: /xyz/openbmc_project/GPIODeviceDetected/E1S_EB_E1S3
+
+- name: pathwatch plug in
+ class: pathwatch
+ pathwatch: path
+ paths: object manager path group
+ pathcallback: dc cycle method pathcallback
+ event: interfacesAdded
+ match_object_path: True
+
+- name: dc cycle method pathcallback
+ description: >
+ 'The method callback invokes the specified D-Bus method.'
+ class: pathcallback
+ pathcallback: method
+ service: org.freedesktop.systemd1
+ path: /org/freedesktop/systemd1
+ interface: org.freedesktop.systemd1.Manager
+ method: StartUnit
+ args:
+ - value: hotplug-dc-cycle.service
+ type: string
+ - value: replace
+ type: string
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
index 964f100..b1c1c24 100644
--- a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
@@ -1,2 +1,3 @@
PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " fan-policy"
-PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " thermal-policy"
\ No newline at end of file
+PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " thermal-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " hotplug-policy"
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor/after-gpiopresence.conf b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor/after-gpiopresence.conf
new file mode 100644
index 0000000..8888f02
--- /dev/null
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor/after-gpiopresence.conf
@@ -0,0 +1,3 @@
+[Unit]
+Wants=mapper-wait@-xyz-openbmc_project-GPIODeviceDetected.service
+After=mapper-wait@-xyz-openbmc_project-GPIODeviceDetected.service
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend
new file mode 100644
index 0000000..4ad4733
--- /dev/null
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+inherit obmc-phosphor-systemd
+
+SYSTEMD_OVERRIDE:${PN}:append = "\
+ after-gpiopresence.conf:phosphor-dbus-monitor.service.d/after-gpiopresence.conf \
+ "
diff --git a/meta-facebook/meta-yosemite5/recipes-phosphor/images/fb-yosemite5-phosphor-image.inc b/meta-facebook/meta-yosemite5/recipes-phosphor/images/fb-yosemite5-phosphor-image.inc
index 966cab8..680fc70 100644
--- a/meta-facebook/meta-yosemite5/recipes-phosphor/images/fb-yosemite5-phosphor-image.inc
+++ b/meta-facebook/meta-yosemite5/recipes-phosphor/images/fb-yosemite5-phosphor-image.inc
@@ -22,4 +22,5 @@
OBMC_IMAGE_EXTRA_INSTALL:append = " \
fan-policy \
thermal-policy \
-"
\ No newline at end of file
+ hotplug-policy \
+"