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 \
+"