meta-facebook: Add support for phosphor-gpio-monitor

Added phosphor-gpio-monitor support for facebook platforms
to enable hot plug/unplug of host feature.

TESTED : Verified hot plug/unplug of all hosts are enabled
and tested in Facebook YosemiteV2 platform.

Signed-off-by: Kumar Thangavel <thangavel.k@hcl.com>
Change-Id: I7ff6647942cdc979c2a3dc6f4c85c1273785cf65
diff --git a/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/fb-compute-multihost/phosphor-multi-gpio-monitor.json b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/fb-compute-multihost/phosphor-multi-gpio-monitor.json
new file mode 100644
index 0000000..2499d66
--- /dev/null
+++ b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/fb-compute-multihost/phosphor-multi-gpio-monitor.json
@@ -0,0 +1,30 @@
+[
+    {
+        "Name": "presence-slot1",
+        "LineName": "PRESENCE-SLOT1",
+        "EventMon": "BOTH",
+        "Continue": true,
+        "Target": "obmc-ipmb-rescan-fru.service"
+    },
+    {
+        "Name": "presence-slot2",
+        "LineName": "PRESENCE-SLOT2",
+        "EventMon": "BOTH",
+        "Continue": true,
+        "Target": "obmc-ipmb-rescan-fru.service"
+    },
+    {
+        "Name": "presence-slot3",
+        "LineName": "PRESENCE-SLOT3",
+        "EventMon": "BOTH",
+        "Continue": true,
+        "Target": "obmc-ipmb-rescan-fru.service"
+    },
+    {
+        "Name": "presence-slot4",
+        "LineName": "PRESENCE-SLOT4",
+        "EventMon": "BOTH",
+        "Continue": true,
+        "Target": "obmc-ipmb-rescan-fru.service"
+    }
+]
diff --git a/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/ipmb-rescan-fru.sh b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/ipmb-rescan-fru.sh
new file mode 100644
index 0000000..cee0eac
--- /dev/null
+++ b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/ipmb-rescan-fru.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+# Rescan the ipmb busses for slots fru.
+
+DBUS_SERVICE="xyz.openbmc_project.Ipmb.FruDevice"
+DBUS_OBJECT="/xyz/openbmc_project/Ipmb/FruDevice"
+DBUS_INTERFACE="xyz.openbmc_project.Ipmb.FruDeviceManager"
+
+busctl call $DBUS_SERVICE $DBUS_OBJECT $DBUS_INTERFACE ReScan
diff --git a/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/obmc-ipmb-rescan-fru.service b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/obmc-ipmb-rescan-fru.service
new file mode 100644
index 0000000..4c71b03
--- /dev/null
+++ b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor/obmc-ipmb-rescan-fru.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=ipmb based rescan the slots fru service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-gpio-monitor/ipmb-rescan-fru.sh
diff --git a/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
new file mode 100644
index 0000000..e64313e
--- /dev/null
+++ b/meta-facebook/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend
@@ -0,0 +1,29 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI:append:fb-compute-multihost = " file://phosphor-multi-gpio-monitor.json"
+SRC_URI:append:fb-compute-multihost = " file://obmc-ipmb-rescan-fru.service"
+SRC_URI:append:fb-compute-multihost = " file://ipmb-rescan-fru.sh"
+
+RDEPENDS:${PN} += "bash"
+
+SYSTEMD_SERVICE:${PN}-monitor += "phosphor-multi-gpio-monitor.service"
+SYSTEMD_SERVICE:${PN} += "obmc-ipmb-rescan-fru.service"
+
+SYSTEMD_LINK:${PN}-monitor:append = " ../phosphor-multi-gpio-monitor.service:multi-user.target.requires/phosphor-multi-gpio-monitor.service"
+
+GPIO_HOST_TEMPLATES:append = " ${WORKDIR}/phosphor-multi-gpio-monitor.json"
+
+do_install:append:fb-compute-multihost() {
+
+    install -d ${D}/usr/share/phosphor-gpio-monitor
+    install -m 0644 ${WORKDIR}/phosphor-multi-gpio-monitor.json \
+                    ${D}/usr/share/phosphor-gpio-monitor/phosphor-multi-gpio-monitor.json
+
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/obmc-ipmb-rescan-fru.service \
+                    ${D}${systemd_system_unitdir}
+
+    install -d ${D}/usr/libexec/phosphor-gpio-monitor
+    install -m 0777 ${WORKDIR}/ipmb-rescan-fru.sh ${D}/usr/libexec/phosphor-gpio-monitor/
+}
+FILES:${PN} += "/lib/systemd/system/obmc-ipmb-rescan-fru.service"